|

使用密匙登录多台vps

目录
    本文上次更新于 971 天前,其内容可能已经过时,如果文章内容或图片资源失效,请留言反馈,我会及时处理,谢谢!

    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

    这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理

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