sshリモート実行コマンドの概要
このブログを書く前に、私はgoogleに関連する文章をたくさん書いて、大部分は/etc/sudoersを修正して、それからNOPASWD:指定したcmdを言って、しかし本当に役に立たないで、遠隔の仮想端末がないこの方法は浮雲で、ubuntu 10.04 server亲测!!
公開鍵認証またはユーザー名パスワード認証に基づいて、リモートlocal 2サーバにログインすることを確保できます(基本的なメンテナンス知識のある人がこのことをするのは問題ありません) cmdスクリプトの場合、絶対パスの問題(相対パスはリモート実行時にピット) に注意してください.
リモートサーバlocal 2 rootユーザー登録禁止 リモートサーバスクリプトでアイデンティティを変換expectでsendパスワードが必要です.これでは安全ではありません.
リモートサーバーの仮想tty端末を提供することができます.このパラメータを加えると、リモートサーバーの仮想端末に自分の権限パスワードを入力することができます.とても安全です.
sshリモート操作の実行
コマンドフォーマット
ssh -p $port $user@$p 'cmd'
$port : ssh
$user: ssh
$ip:ssh ip
cmd:
準備作業
不足
このコマンドは、私たちのほとんどのニーズを満たすことができますが、通常、メンテナンスに多くのものを配置する際にroot権限が必要ですが、いくつかの制限があります.リモート・サーバの実行にsudo権限が必要なスクリプト
sshの-tパラメータ
-t Force pseudo-tty allocation. This can be used to execute arbitrary screen-based programs on a remote machine, which can be very useful, e.g. when implementing menu services. Multiple -t options force tty allocation, even if ssh has no local tty.
リモートサーバーの仮想tty端末を提供することができます.このパラメータを加えると、リモートサーバーの仮想端末に自分の権限パスワードを入力することができます.とても安全です.
コマンドフォーマット
ssh -t -p $port $user@$ip 'cmd'
サンプル・スクリプト
#!/bin/bash
#
ip_array=("192.168.1.1" "192.168.1.2" "192.168.1.3")
user="test1"
remote_cmd="/home/test/1.sh"
# ssh
for ip in ${ip_array[*]}
do
if [ $ip = "192.168.1.1" ]; then
port="7777"
else
port="22"
fi
ssh -t -p $port $user@$ip "remote_cmd"
done