本地配置alias通过ssh登录目标主机

本地可以通过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).

如果出现报错说明这个问题是你的密钥文件的权限太大了

三、通过跳板机登录目标机

ssh 跳板机示意图 - 来自网络

当目标机需要通过跳板机登录时,需要通过设置 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参数来分配伪终端,以便用户可以输入密码。

相关文章:

Author: thinkwei

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注