Linux SSH远程执行
前提条件
描述 | 详情 |
配置SSH免密码登录 | 确保在本地和远程主机之间已设置好基于公钥的身份验证,以便无需输入密码即可进行SSH连接。 |
基本命令格式
命令 | 说明 |
ssh user@remoteNode "command" | 使用SSH连接到远程节点并在远程节点上执行指定的命令。 |
详细步骤
1、简单命令执行:
示例:ssh user@remoteNode "cd /home ; ls"
解释: 在远程节点上执行cd /home
和ls
两个命令,用分号隔开。
注意点: 必须使用双引号将命令括起来,否则第二个命令会在本地执行。
2、脚本方式执行:
示例:
#!/bin/bash ssh user@remoteNode > /dev/null 2>&1 << eeooff cd /home touch abcdefg.txt exit eeooff echo done!
解释: 使用Here Document(<<)将多条命令发送到远程节点执行,并在执行结束后输出“done!”。
注意点: Here Document的结束标记(如eeooff
)可以任意修改。
3、多命令执行:
示例:ssh user@remoteNode "pwd; cat hello.txt"
解释: 在远程节点上连续执行pwd
和cat hello.txt
两个命令,用分号隔开。
注意点: 使用单引号或双引号将多个命令括起来,防止本地执行。
4、带sudo权限的命令执行:
示例:ssh user@remoteNode "sudo ls /root"
解释: 在远程节点上以root权限执行ls /root
命令。
注意点: 需要确保用户具有sudo权限,且可能需要输入密码。
5、执行本地脚本:
示例:ssh user@remoteNode < test.sh
解释: 通过重定向将本地脚本test.sh
发送到远程节点执行。
注意点: 脚本路径必须是绝对路径,否则会出错。
6、执行远程服务器上的脚本:
示例:ssh user@remoteNode "/home/user/test.sh"
解释: 直接在远程节点上执行指定路径的脚本。
注意点: 需要指定脚本的绝对路径。
7、并行执行多节点命令:
方法一:使用Bash for循环:
for h in node1 node2 node3; do ssh root@$h "cd /home ; ls" done
方法二:使用ClusterShell:
clush -l root -w node1,node2,node3 "ls /home/"
方法三:使用PDSH:
pdsh -R ssh -l root -w node1,node2,node3 "ls /home/"
解释: 使用不同的工具实现在多节点上并行执行命令,ClusterShell和PDSH需要安装相应的软件包。
8、避免首次连接确认:
示例:ssh -o StrictHostKeyChecking=no user@remoteNode "cd /home ; ls"
解释: 通过添加-o StrictHostKeyChecking=no
参数,避免首次连接时的确认提示,适用于自动化脚本。
9、后台运行命令:
示例:ssh -f user@remoteNode "command"
解释: 使用-f
选项使SSH命令在后台运行,常结合-n
选项使用,将标准输入重定向到/dev/null
。
主要SSH参数说明
参数 | 说明 |
-l | 指定登入用户 |
-p | 设置端口号 |
-f | 后台运行 |
-n | 将标准输入重定向到/dev/null |
-N | 不执行远程命令,只做端口转发 |
-q | 安静模式,忽略对话和错误提示 |
-T | 禁用伪终端配置 |
-t | 为远程系统上的SSH进程分配一个伪TTY |
-v | 显示调试信息 |
通过以上方法和注意事项,可以实现在Linux环境下通过SSH高效、安全地远程执行命令和脚本。
各位小伙伴们,我刚刚为大家分享了有关linux ssh 远程执行的知识,希望对你们有所帮助。如果您还有其他相关问题需要解决,欢迎随时提出哦!
本文来源于互联网,如若侵权,请联系管理员删除,本文链接:https://www.9969.net/80434.html