常常和服务器打交道的同志,最频繁的操作就是登陆服务器。每次登陆服务器都要输入密码特别的烦人。 有没有一种办法可以只输入一次密码,以后有都不用再输入密码的办法?如果有多个服务器怎么办?又要输密码吗? 其实我们常常使用 SSH 登录服务器,这个 SSH 就提供了这样的操作,不过需要配置。

生成公私钥文件

要不想每次都输入密码才登录服务器,那就得让程序来做,但是这样又不安全,所以我们先要加密。比较安全的就是 SSH,配合 rsa 算法来实现免密登录。 先来生成加密的公私钥

1
ssh-keygen -t ras

在输完命令之后一路回车,会在 ~/.ssh 目录下生成 id_rsa 私钥和 id_rsa.pub 公钥。

把公钥拷贝到服务器

上一步我们生成了公私钥文件,接下来就要把公钥放到服务器

1
2
cd ~/.ssh
ssh-copy-id -i id_rsa.pub user@192.168.1.xxx # -i 表示把指定的文件拷贝到服务器

输入这条命令,还需要验证一次登录密码,也是唯一的一次,之后就可以不用再输入密码了。 如果修改了 ssh 的默认端口可以在使用 -p 来设置端口号

1
ssh-copy-id -i id_rsa.pub user@192.168.1.xxx -p port

配置多账号

通过上面的步骤,已经可以在登录服务器时不用在输入密码了。但是每次还要输入用户名和 ip ,也是挺麻烦的。有办法可以不需要每次都输吗?答案是可以的,接下来的内容就是解决这个问题的。

先在 ~/.ssh 目录下创建一个 config 的文件,并根据自己的情况加入如下内容

1
2
3
4
5
6
7
8
9
Host A # 别名
User usera # 登录用户名
Hostname 192.168.1.xxx # 服务器 ip
IdentityFile ~/.ssh/id_rsa # 私钥文件存放地址
Port 22 # 端口号,默认 22,没改可以不用写
Host B
User userb
Hostname 192.168.1.xxx
IdentityFile ~/.ssh/id_rsab

做完了上面的如果我们要登录服务器 A ,就只需要输入 ssh A 就可以登录到服务器了。其中 A 是服务器 A 的别名。