使用密匙登录多台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前面的#号删掉。

欢迎转载,不需注明出处,就说是你写的

参考:

guest
0 评论
内联反馈
查看所有评论