使用RSA访问目标机

首先,在本地或者说是想要发起访问请求的机器的上创建好公钥和私钥(使用个人的用户登陆的,我用的root的用户,所以前面的标识符是#,而不是$ )

进入到你的用户路径下的/home/xxx/.ssh/路径下,最好查看下都已经有了什么rsa之类的文件,后面创建的时候避免重名,使用ssh-keygen创建公钥和私钥:

# cd ~/.ssh/
# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): my_rsa
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in my_rsa.
Your public key has been saved in my_rsa.pub.
The key fingerprint is:
xx:xx:xx:……:xx:xx root@localhost.localdomain

-t 是指定你的公钥和私钥的类型,可以是 RSA 或者 DSA。

红色的部分如果填写的话,你的公钥和私钥的名字就会是这个,公钥的话后缀为 .pub 。

下面是让你输一个密码,输入的时候字符不回显,这里我就是直接回车,代表无密码。

如果是在unix下的运行的话,后面还有个 key's randomart image。

这时 ll (两个小写L)就能看到目录下已经创建好了两个文件:

# ll
-rw-------   1 user  group  1766 11 13 15:15 my_rsa
-rw-r--r--   1 user  group   409 11 13 15:15 my_rsa.pub

可见,默认的情况下,这个私钥(my_rsa)只能是给创建的用户使用的,别人当然最好不要随便使用我的私钥咯。

 

然后,把公钥(my_rsa.pub)放到目标机上(使用root用户登陆到目标机上,要不然很多操作需要确认的)

无论是什么途径,scp 或者 u盘,把公钥(my_rsa.pub)放到目标机的 ~/.ssh/ 这个路径下

请注意,这边用了一下相对路径 “~”,主要是考虑到目标机可能会让不同的人去登陆,如果你指定了root用户,那么这个路径就是/root/.ssh/;如果用户是mike,那么路径就是/home/mike/.ssh/。

确认公钥已经在这个路径下之后,最好修改一下权限:

# chmod 700 -R ~/.ssh/
# chown user:user -R ~/.ssh/

在这之后需要把公钥(my_rsa.pub)的内容拷贝到一个名为authorized_keys的文件中。什么?没有?那就创建一个呗!

# cat my_rsa.pub >> ~/.ssh/authorized_keys

 

再然后,到本机上操作点东西:

如果你就只是像这样操作:

# ssh 192.168.8.8

就在你本机的 ~/.ssh/ 路径的config文件里面写两句话:

# vim ~/.ssh/config
// 添加下面两句话
host 192.168.8.8
identityfile ~/.ssh/my_rsa

然后你就可以用上面的ssh IP登陆到目标机上了,用户就是你当前的用户咯~

 

最后,额外一些

如果你看到别人都是用像下面这样的语句登陆到一个目标机上的话:

# ssh mike@192.168.8.8 -p9000

那你就还要再改一改你的配置了:

# vim ~/.ssh/config
// 添加下面两句话
host 192.168.8.8
user mike
port 9000
identityfile ~/.ssh/my_rsa

如果你现在就尝试用上面的这个带用户名带端口号的方法,多半是登不到你想要登陆的主机的:

# ssh mike@192.168.8.8 -p9000
ssh: connect to host 192.168.8.8 port 9000: Connection refused

因为你要看看目标主机有没有sshd开通了这个端口的监听:

这个就要到目标机上鼓捣了:

# vim /etc/ssh/sshd_config
// 原文有可能是这样
……
#Port 22
#Protocol 2,1
Protocol 2
……

// 你要修改成这样
……
Port 22
Port 9000
#Protocol 2,1
Protocol 2
……

虽然上面的Port 22是被注释掉的,但是 sshd 一般都是默认监听这个的,不信你可以用 netstat 查看一下,为了不影响原有的监听,还是也顺手把22的注释放开,然后在下面添上你想要用的端口,之后要重启一下 sshd 服务:

# /etc/init.d/sshd restart
停止 sshd:                                    [确定]    
启动 sshd:                                    [确定]

然后你用 netstat 查看一下就发现你添加的端口已经在被 sshd 侦听了。

这样,你再去你本机上用上面那个 ssh 命令去登陆,应该就可以了~

如果还有问题的话,欢迎留言,虽然我也是个新手,但是很愿意和你一起进步~O(∩_∩)O~

如果你觉得本文对你有帮助的话,烦请点点推荐,谢谢!

posted @ 2014-11-13 16:22  carrotH  阅读(781)  评论(0编辑  收藏  举报