使用密匙登录多台vps
2019-7-22
需求
两台vps,现在需要用本地的电脑用秘钥的方式连接vps,并且两台vps之间能够互相连接(以免其中一台被墙后无法用另一台连接),一台vps称为A,另一台称为B
生成和拷贝相关文件
首先登录其中一台vps,假设是A,port是ssh的端口,一般是22,但是如搬瓦工会随机分配一个端口,user是用户名(建议使用普通用户),ip1是A主机的ip地址
ssh -p port user@ip1
执行如下命令,生成秘钥对,默认是在用户家目录下的.ssh文件夹下
ssh-keygen -t rsa
进入到.ssh目录并查看.ssh目录下的文件
cd ~/.ssh/ && ls -l
其中id_rsa.pub是公钥,id_rsa是私钥,为了与另一台服务器生成的id_rsa相区分,我们把id_rsa改为id_rsa_a
mv id_rsa id_rsa_a
为了保险起见,我们把私钥加密备份一次,其中file为文件名,即id_rsa,password为设置的密码,/path/to/file.tar.gz是加密文件保存的地方和加密的文件名
tar -czvf - file | openssl des3 -salt -k password -out /path/to/file.tar.gz
如果需要解压加密的文件,只需输入下面的命令,password为设置的密码,/path/to/file.tar.gz为需要解密的文件
openssl des3 -d -k password -salt -in /path/to/file.tar.gz | tar xzf -
我们将公钥中的内容复制到authorized_keys中,并设置它的权限为600
cat id_rsa.pub >> authorized_keys && chmod 600 authorized_keys
然后将得到的id_rsa_a下载到本地主机和另外一台vps的家目录下的.ssh目录下,port为ssh端口号
scp -P port user@ip1:/home/user/.ssh/id_rsa_a ~/.ssh/
对于vps也是一样,只需要先登录上vps,然后执行一样的命令。做完之后将服务器上的id_rsa_a删掉。对于另一台vps B,我们也做同样的操作,将生成的id_rsa改为id_rsa_b,并拷到本地和vps A家目录下的.ssh文件夹中,完后删掉B主机上的id_rsa_b,修改authorized_keys的权限。
配置
在A主机下的家目录下的.ssh目录下,新建一个config文件,这里使用的vim编辑器
cd ~/.ssh/ && vim config
里面内容如下,其中ip2是主机B的ip地址,id_rsa_b是主机B生成的私钥。
Host ip2
HostName ip2
IdentityFile ~/.ssh/id_rsa_b
对于B主机的配置,同样,只需要将ip改为主机A的IP地址,id_rsa_b改为id_rsa_a即可。
本机的配置如下,其中ip1为A主机的地址,ip2为B主机的地址。
Host ip1
HostName ip1
IdentityFile ~/.ssh/id_rsa_a
Host ip2
HostName ip2
IdentityFile ~/.ssh/id_rsa_b
最后,配置ssh的配置文件,编辑sshd_config(需要用root身份编辑)
vim /etc/ssh/sshd_config
按”i”进入输入模式,在最后插入如下代码,主要是更改端口、禁止root登录和使用rsa密钥进行登录,
PermitRootLogin no
### 更改端口 #####
Port 26524
# 是否允许RSA密钥对方式登录系统
RSAAuthentication yes
PubkeyAuthentication yes
### 密钥配置文件名称为用户家目录下的.ssh/authorized_keys
AuthorizedkeysFile .ssh/authorized_keys
#### 禁用密码登录,可以先确认客服端可以使用密钥登录后在改
#PasswordAuthentication no
重启ssh服务,当前连接的不会丢失。
service sshd restart
用如下的命令进行ssh连接,然后输入设置的密码即可
ssh -p port ip1 -i /home/user/.ssh/id_rsa_a
2023-4-20 更新 在 config 文件配置好之后,直接通过下面的方式也是可以的 (虽然我一直都是在这么用的)
ssh -p port user@ip
如果能连接成功,则将sshd_config配置中的#PasswordAuthentication no前面的#号删掉。
欢迎转载,不需注明出处,就说是你写的
参考: