秒懂!SSH免密登录和快速登录的实用小技巧
ssh免密登录服务器,需要在本地生成公钥和私钥,并且将公钥上传到服务器中,保存在家目录的 .ssh/authorized_keys下。
本地生成ssh公钥私钥
在本地主机中生成ssh秘钥可以通过命令行运行如下命令生成:
ssh-keygen -t rsa
运行该命令后,需要输入的地方直接回车就可以了。成功后会在家目录下的.ssh
目录中生成id_rsa
和id_rsa.pub
两个文件,其中id_rsa
是存放私钥的文件,而id_rsa.pub
则为存放公钥的文件。
将本地ssh公钥上传到服务器
将本地文件上传到服务器的方法挺多的,比较方便的就是scp
命令了,同时它也能够从服务器上拷贝文件到本地。其用法为:scp source desc
,其中的source
为源文件路径,即你想要上传的文件或者从服务器拷贝到本地文件的路径,而desc
为目标路径,即文件的最终去向。(从哪来source,到哪去desc),对于其他参数可自行百度。如果源文件或者目标路径在远程主机上,需要注意路径格式。以远程主机为Linux
主机为例。如果要从远程主机拷贝文件:
scp user@hostname:/home/userhome/a.txt ./
# user为远程主机的用户名,hostname为远程主机的名字,可以是域名,也可以是ip地址,后面的文件路径要用`:`分隔,目标路径 `./`意味着将文件拷贝到当前目录下
将文件上传到服务器大同小异,比如本地现在在.ssh
路径下,要将当前路径的id_rsa.pub
上传到服务器,操作如下:
scp ./id_rsa.pub git@192.168.56.114:/home/git/
该命令将当前目录下的id_rsa.pub
文件上传到服务器192.168.56.114的/home/git/
目录下,用户名为git。
无论是上传还是拷贝远程文件,过程中都需要输入用户密码。
注意:id_rsa
为私钥文件,千万不能泄露,上传服务器的为公钥文件id_rsa.pub
,况且,上传私钥也没用。
将公钥添加到.ssh/authorized_keys
文件中
公钥上传到服务器之后,还不能通过免密登录,需要将公钥添加到.ssh/authorized_keys
文件中:
$ ls
id_rsa.pub
$ cat id_rsa.pub > .ssh/authorized_keys
$ cat .ssh/authorized_keys
ssh_rsa XXXXXXXXXXX youremail@xxx.com
现在免密登录的功能其实已经大功告成了,在本地主机上直接ssh user@ip
就能登录服务器了。如果不能登录试着重启一下本地的ssh服务。
懒人秘笈
现在我们虽然可以免密登录远程主机,但是每次登陆都要输入用户名@主机ip
这一串鬼东西,本着能偷懒就偷懒的原则,给这个主机映射一个简单的名字来进行登录吧。
在.ssh
目录下有一个config
文件,该文件可以为远程主机配置别名用于快速登录,如果没有该文件,就新建一个吧。
修改.ssh/config
文件为:
Host mac
HostName 192.168.56.114
User git
#port 22
其中Host字段后面的 mac
为我们起的别名,HostName
为主机的ip地址,User
字段则指定登录的用户名,由于我将authorized_keys
文件放在了git用户的家目录的.ssh目录中,所以我的User字段为git
大功告成
现在你只需要在本地主机上通过 ssh mac
就能登录远程主机了。