SSH跳转远程目标服务器的高阶使用

在日常开发和运维的过程中,我一般是使用Xshell的工具对linux服务器的相关操作。我说一下我写这篇文章的背景:甲方因为安全需要,给了一台可以通过访问的跳板机,通过这台跳板机去操作另外的十多台应用服务器,那么肯定是要用到ssh命令去跳转到目标服务器。

# 在跳板机执行ssh命令到目标服务器,执行完后需要输入root密码
ssh [email protected] 

一般情况下直接使用上述的命令,输入密码后跳转到目标服务器,这样就能在目标服务器上执行想要的操作。但是每次都输入密码,有点麻烦,作为一个懒人必须能少敲的命令少敲。

  • 第一次优化,使用密钥进行身份验证

    使用SSH密钥对进行身份验证可以提高安全性,避免了每次连接时输入密码的麻烦。在本地计算机上生成SSH密钥对后,可以将公钥复制到远程服务器上,然后使用私钥进行身份验证。

    在使用SSH连接时,私钥文件通常用于身份验证,以便你能够连接到目标服务器。以下是获取SSH连接所需的私钥文件的一些常见方法:

    #首先进入到这个目录下 
    cd /root/.ssh
    #创建一个文件名,因为我的ip结尾是154,所以这么命名 
    touch 154_rsa
    #这个命令将会生成一个新的RSA密钥对,包括公钥和私钥。你可以选择在默认路径上保存密钥对(`~/.ssh/id_rsa`和`~/.ssh/id_rsa.pub`),或者选择自定义路径。
    ssh-keygen -t rsa -b 4096
    

    执行完上ssh-keygen -t rsa -b 4096会提示存的路径和输入密码,输入密码的时候直接回车,建议不使用密码。如图所示:

    SSH跳转远程目标服务器的高阶使用_第1张图片

    这样就会在/root/.ssh目录生成154_rsa和154_rsa.pub两个文件,我们需要把154_rsa移动到154服务器

    [root@localhost .ssh]# scp 154_rsa [email protected]:/root/.ssh
    154_rsa                                                                                                                                                                                          100% 3326     4.4MB/s   00:00    
    [root@localhost .ssh]# ssh [email protected]
    Last login: Fri Jul 14 11:31:33 2023 from 192.168.17.154
    [root@localhost ~]# 
    
    

    这样直接ssh不需要输入密码就能直接跳转了。

    但是这么做我还是觉得不够,因为我还需要记住ip,每次跳转还得查一下某台服务器的ip是什么,很麻烦,于是我开始做第二次优化。

  • 第二次优化

    我想达到什么目的:直接输入ssh 153就跳转到153服务器上,或者ssh order 直接跳转到153服务器上。

    使用SSH的配置文件来实现在本机直接通过IP尾号连接到目标服务器的操作。以下是具体的步骤:

    #首先进入到这个目录下 
    cd /root/.ssh
    #创建一个文件名,config,用来配置信息
    touch config
    #生成153。
    ssh-keygen -t rsa -b 4096
    

    SSH跳转远程目标服务器的高阶使用_第2张图片

    生成好了153_rsa的私钥和153_rsa.pub公钥。配置config文件

    Host 153 #别名可以设置为153或者order等你想要的别名
      HostName 192.168.X.153  # 目标服务器的IP地址
      User username  # 目标服务器的用户名
      Port 22  # 目标服务器的SSH端口号
      IdentityFile ~/.ssh/153_rsa  # 身份验证文件的路径
    

    保存后需要提高153_rsa的权限,,因为该文件的权限设置过于宽松将无法访问指定的私钥文件

    chmod 600 /root/.ssh/153_rsa
    

    153_rsa.pub的公钥文件添加到跳板机服务器的authorized_keys文件中

    ssh-copy-id -i ~/.ssh/153_rsa.pub root@跳板机ip
    

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IqXYfwGG-1689314874082)(imags/image-20230714140611276.png)]

    在另外一台服务器也这么操作执行,这样就能如上所示在153 154上来回且换了。

提示:

如果在使用私钥连接到目标服务器时,出现类似于“Enter passphrase for key”的提示,这意味着私钥文件被设置了一个密码保护,并且需要输入密码才能使用该私钥进行身份验证。

如果您设置了私钥密码并且忘记了密码,则无法使用该私钥进行身份验证。您可以尝试使用以下命令检查私钥文件的密码:

ssh-keygen -y -f ~/.ssh/154_rsa

此命令将使用指定的私钥文件路径(~/.ssh/154_rsa)显示公钥,同时会提示您输入密码。如果您输入了正确的密码,则将显示公钥。如果您输入了错误的密码,则会显示错误消息。

如果您想删除私钥文件的密码保护,请使用以下命令:

ssh-keygen -p -f ~/.ssh/154_rsa

此命令将使用指定的私钥文件路径(~/.ssh/154_rsa)删除密码保护,并提示您输入新密码。如果您不想设置新密码,则可以按Enter键跳过此步骤。

如果您成功删除了私钥文件的密码保护,则可以使用该私钥文件连接到目标服务器,而无需再输入密码进行身份验证。

你可能感兴趣的:(程序员的日常,ssh,服务器,linux)