SSH免密码及别名登录设置

问题

众所周知,在用SSH远程登录linux服务器时,可以用下面的命令:

ssh root@192.168.1.209

但麻烦的是,每次都要输入服务器地址和密码,有没有方法不用每次都输入密码,甚至可以给服务器设置一个容易记住的别名,例如可以ssh 209直接登录。

解决

使用”公钥登录”的方法可以解决这个问题。“公钥登录”的原理很简单,用户将自己的公钥储存在远程服务器上。登录的时候,远程服务器会向用户发送一段随机字符串,用户用自己的私钥加密后,再发回来。远程主机用事先储存的公钥进行解密,如果成功,就证明用户是可信的,直接允许登录。

1. 免密登录

在用户的~/.ssh目录下有文件id_rsaid_rsa.pub,前者表示本机的私钥,后者表示本机的公钥。如果没有这两个文件,则可以运行下面的命令生成:

$ ssh-keygen

运行上面的命令以后,系统会出现一系列提示,一路按回车即可,运行结束在.ssh目录会生成上述两个文件。

然后用ssh-copy-idscp命令将生成的公钥id_rsa.pub传到远程机器上:

$ ssh-copy-id root@192.168.1.209

因为公钥只是一串字符器,所以可以不用上面这个命令,可以直接拷贝本机的公钥里的字符串,附加到远程主机的~/.ssh/authorized_keys里,这样就可以免密登录了。

2. 别名登录

按上面第一步设置后,可以用ssh root@192.168.1.209不用输入密码就可以直接登录了,现在设置将root@192.168.1.209209代替,直接用ssh 209就可以登录。

在本机的 ~/.ssh目录下创建 config文件:

$ vim ~/.ssh/config

输入以下内容:

Host 209
User root
HostName 192.168.1.209
IdentityFile ~/.ssh/id_rsa

其中内容说明如下(端口默认为22):

  • Host 209 :自己定的别名
  • User root :远程主机的用户名
  • HostName 192.168.1.209:远程主机的地址
  • IdentityFile ~/.ssh/id_rsa:本地私钥

当前如果要登录多个主机,可以设置多个:

Host herohuang
HostName herohuang.com
User acheron
IdentityFile ~/.ssh/id_rsa_a
Host github
HostName github.com
User github
IdentityFile ~/.ssh/id_rsa_b

发表评论

电子邮件地址不会被公开。 必填项已用*标注