标签:
说明:下文中说的
‘客户端‘指的是你所使用的本地机器;
‘服务端‘指的是远程你要连接的机器;
----------------------------------------------------------
1.首先在客户端打开shell窗口,输入能生成‘公钥,私钥对‘的命令:
ssh-keygen -t rsa -P ‘‘ #注意参数-P中的P是大写的
#-P后面的单引号对与大写P之前有空格
2.稍等会让你输入生成的文件保存在哪,默认的位置是家目录,一般直接回车即可
#在没改变存储位置的情况下,会在家目录生成一个隐藏的.ssh文件夹,并且在.ssh文件夹里又生成了一个公钥文件:id_rsa.pub,和一个私钥文件:id_rsa
#.ssh为隐藏文件,直接ls显示不出来,要用ls -a才能显示出来,看不看得见都不影响cd .ssh命令
3.利用scp或其它方式将.ssh文件夹中的公钥复制到服务器端(我是用scp复制的)
scp /home/pi/.ssh/id_rsa.pub yang@138.128.204.165:/home/yang/
#因为是利用scp方式传输的,所以会提示你输密码,如果已实现ssh的免密码登录了,再用scp的时候就不用再输密码了
#其实scp传输的时候也有几个坑,如果没系统的看过scp文档的话,简单说一下:1.其实我传文件的时候用的不是上面写的那条命令,而是scp -P 10022 /home/pi/.ssh/id_rsa.pub yang@138.128.204.165:/home/yang/,可以看到多了个‘-P 10022‘,是因为我的ssh服务端设置的ssh连接端口号是10022,其实平时咱们看到的没有加端口的命令实际上是有一个隐式的-P 22在里面呢(22是ssh安装时默认的端口),就相当于你写了‘scp 本地/远程 远程/本地后‘,scp还会处理一下,变成‘scp -P 22 本地/远程 远程/本地‘再发送到远端的服务器
4.在远程服务器的家目录下创建.ssh文件夹,然后将家目录的刚刚从本地传过去的id_rsa.pub复制到.ssh文件夹下,并且改名为authorized_keys
#我是在远程服务器上也执行了1中的命令系统给生成的,不过这样比直接用mkdir创建麻烦,当时就是考虑是不是自己创建不行,是不是在远程服务器的.ssh也是要用1中的命令创建的呢,保险起见那么办的
#!网上的教程不是先将id_rsa.pub复制到.ssh后改名为authorized_keys,而是在家目录就直接用cat id_rsa.pub >>.ssh/authorized_keys,我想应该是如果有多台机器都想免密码连接到这台远程服务器,可以将多台本地客户机生成的id_rsa.pub都追加到一个文件里面(我也只是猜测,有时间实践一下)
5.将authorized_keys的权限设置为600
#chmod 600 authorized_keys 我这里直接写的authorized_keys是因为当前路径就是在.ssh文件夹下,如果当前位置不是.ssh文件夹authorized_keys必须用绝对路径
#之后再连就能连上了,关于连接这里也有一点是需要注意的,平时大家都是写的‘ssh 远程服务器ip‘这种方式连的,但有些人这么连但连接不上,为什么呢?是因为用这种方式连的人是因为远程服务器上有和你正在登录的用户同名的用户,并且远程服务器上ssh默认的端口是22,才能用那种直接连的方式,否则,如果远程服务器上的ssh连接密码变了,你在连的时候就要加上‘-P 端口号‘,如果远程服务器上的用户名没有和你在本地正在登录的这个用户重名的,你还需要指定‘-l 用户名‘才可以,所以我连接我的远程服务器是这样的‘ssh -l yang -P 10022 aaa.bbb.ccc.ddd‘.话又说回来了,就算是用‘ssh ip地址‘连接的,正如前面说的,在本机次命令发给远程服务器之前它还是加工了一下,将默认的用户名和密码参数加上了,即你写的是 ssh www.xxx.yyy.zzz,但发送之前ssh又处理了一下,ssh -l 本地当前登录的用户名 -P 22 www.xxx.yyy.zzz‘然后将处理后的这条命令发到远程服务器进行登录操作;免密码登录是在前面说的基础上再参考http://os.51cto.com/art/201209/358478.htm
标签:
原文地址:http://www.cnblogs.com/lianrenjujishou/p/5843387.html