通过ssh在远端服务器执行单条、多条命令、脚本的方式

ssh [option] destination [command]

分号式

ssh user@host 'cmd1 ; cmd2 ; cmdn'

EOF式

ssh user@host << EOF
cmd1
cmd2
cmdn
EOF

通过ssh在远端服务器上执行远程脚本

即执行位于目标服务器本地的脚本

ssh user@host /path/to/remote/script-file

通过ssh在远端服务器上执行本地脚本

即把客户端本地脚本放到目标服务器上执行

  • 不带位参

    ssh user@host < /path/to/local/script-file

  • 传递位参

    ssh user@host bash -s < /path/to/local/script-file args...

引用

sshd_config 配置片段

设置某个用户只允许某个IP登录,其他IP全拒绝,且不影响任何其他用户

场景:每个服务器是个 Agent,上有一个 ansible 用户,此用户只接受来自 Ansible Server 端的 IP 连接 SSH, 拒绝其他 IP 通过 ansible 用户连接 SSH,且其他已有用户、新用户都正常使。

目前发现的两种方式(修改 /etc/ssh/sshd_config 配置文件):

1. 使用 DenyUsers 方式

DenyUsers ansible@"!IP,*"

2. 使用 Match 方式

Match User ansible
  AllowUsers ansible@IP

这种方式好处是单独匹配 ansible 用户做个性化配置,可以增加额外字段,比如添加 PasswordAuthentication no 不允许密码登录。


·End·