Last updated on 2023年5月24日
本地可以通过alias
别名来配置命令便捷登录目标主机,并进入指定目录下
示例:
在 ~/.bash_aliases
中写入,有的为 ~/.bashrc
(多语句请用 ;
英文分号来隔开)
alias ssh-test='sshpass -f ~/path/test_passwd.txt ssh -o "StrictHostKeyChecking no" user@ip -t "cd /data/wwwroot ; bash -l"'
该命令创建了一个别名(alias),名为ssh-test。当您在终端中输入ssh-test时,它将执行以下操作:
1. 使用sshpass命令提供密码,该密码保存在~/path/test_passwd.txt文件中。
2. 使用ssh命令连接到指定的IP地址,并使用指定的用户名(user)进行身份验证。
3. 在连接成功后,将在远程主机上执行一条命令,该命令将会进入/data/wwwroot目录并启动一个新的bash会话(bash -l)。
4. -o “StrictHostKeyChecking no”参数用于在连接时关闭主机密钥检查。总的来说,这个命令的目的是使用ssh连接到远程主机并进入指定目录,以便在远程主机上执行命令或交互式操作。该命令中使用sshpass命令提供密码,因此需要在本地主机上安装sshpass命令。同时,注意在使用别名时,需要先定义别名,才能在终端中使用它。
来自chatpgt翻译上述命令
执行source ~/.bash_aliases
之后就可以直接在终端使用 ssh-test
命令直接进入目标机器了
一、密码登录
需要安装 sshpass
应用, yum install sshpass
sshpass -f /path/to/file ssh user@ip # 推荐做法,注意文件权限设置为 600
sshpass -p yourPasswd ssh user@ip # 避免使用
二、密钥文件登录
ssh -i /path/to/key.pem user@ip
注意 pem 私钥权限设置为仅本用户可读写 chmod 600 *.pem
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: UNPROTECTED PRIVATE KEY FILE! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0755 for '/root/my_auths/fm_servers/dataCenter.pem' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
Load key "/root/my_auths/fm_servers/dataCenter.pem": bad permissions
root@60.115.116.117: Permission denied (publickey,gssapi-keyex,gssapi-with-mic).
如果出现报错说明这个问题是你的密钥文件的权限太大了
三、通过跳板机登录目标机
当目标机需要通过跳板机登录时,需要通过设置 ProxyCommand
参数来登录
ssh -o StrictHostKeyChecking=no -o 'ProxyCommand=sshpass -p "jumpPassword" ssh -o StrictHostKeyChecking=no -W %h:%p -p 22 jumpUser@jumpIP' -i /path/to/jump_id_rsa.pem -p 22 user@ip
四、问答
1.关闭主机密钥检查
配置忽略RSA key fingerprint
询问: Are you sure you want to continue connecting (yes/no/[fingerprint])?
The authenticity of host '192.168.10.2 (192.168.10.2)' can't be established.
RSA key fingerprint is a3:bf:28:ae:81:7b:c6:a4:6f:34:a3:42:e4:16:0c:9b.
Are you sure you want to continue connecting (yes/no)?
使用 -o "StrictHostKeyChecking no"
参数来配置忽略。示例如下:
ssh -o "StrictHostKeyChecking no" -i /path/to/key.pem user@ip
2. sshpass -P 的用法
具体可见手册 man sshpass
-P 参数的意思
实际用法是你的私钥有加密密语,在连接对方服务器时如果要求 Prompt 提供密码或密语时自动匹配提示语并填入
简化用法:
sshpass -p yourPassphrase -P assphrase ssh -i /path/to/key.pem user@ip
实际带跳板机用法:
sshpass -p yourPassphrase -P assphrase ssh -o StrictHostKeyChecking=no -o 'ProxyCommand=sshpass -p "jumpPassword" ssh -o StrictHostKeyChecking=no -W %h:%p -p 22 jumpUser@jumpIP' -p 22 -i /path/to/key.pem user@ip
3. ssh -W 参数
-W host:port #将 client 过来的标准输入和输出 forward 到 host 和 port 指定的地方
4. ssh -t 参数
-t 参数表示强制分配伪终端(pseudo-tty)它允许用户在远程主机上执行交互式命令,就好像在本地主机上一样。如果不使用-t
参数,那么在远程主机上执行命令时,用户将无法与命令进行交互。例如,如果您需要在远程主机上执行一个需要用户输入密码的命令,您需要使用-t参数来分配伪终端,以便用户可以输入密码。
相关文章: