在日常开发和运维的过程中,我一般是使用Xshell的工具对linux服务器的相关操作。我说一下我写这篇文章的背景:甲方因为安全需要,给了一台可以通过vpn访问的跳板机,通过这台跳板机去操作另外的十多台应用服务器,那么肯定是要用到ssh命令去跳转到目标服务器。
# 在跳板机执行ssh命令到目标服务器,执行完后需要输入root密码
ssh root@192.168.13.xx
一般情况下直接使用上述的命令,输入密码后跳转到目标服务器,这样就能在目标服务器上执行想要的操作。但是每次都输入密码,有点麻烦,作为一个懒人必须能少敲的命令少敲。
-
第一次优化,使用密钥进行身份验证
使用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会提示存的路径和输入密码,输入密码的时候直接回车,建议不使用密码。如图所示:
这样就会在/root/.ssh目录生成154_rsa和154_rsa.pub两个文件,我们需要把154_rsa移动到154服务器
[root@localhost .ssh]# scp 154_rsa root@192.168.88.154:/root/.ssh 154_rsa 100% 3326 4.4MB/s 00:00 [root@localhost .ssh]# ssh root@192.168.88.154 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
生成好了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
在另外一台服务器也这么操作执行,这样就能如上所示在153 154上来回且换了。
SCP:
上述配置完成之后就可以直接使用命令: scp /usr/local/qhyu 154:/usr/local,在153上将qhyu文件直接复制到154的指定目录。
scp /path/to/local/file <hostname>:/path/to/remote/directory
提示:
如果在使用私钥连接到目标服务器时,出现类似于“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键跳过此步骤。
如果您成功删除了私钥文件的密码保护,则可以使用该私钥文件连接到目标服务器,而无需再输入密码进行身份验证。