ssh
OpenSSHクライアントにパスワードを自動的に入力するスクリプトを作成する必要があります。
myname@somehost
password でSSH 接続する必要があるとしましょうa1234b
。
私はすでに試しました...
#~/bin/myssh.sh
ssh myname@somehost
a1234b
...しかし、これは機能しません。
この機能をスクリプトに組み込むにはどうすればよいですか?
最初にsshpassをインストールする必要があります。
apt-get install sshpass
yum install sshpass
pacman -S sshpass
例:
sshpass -p "YOUR_PASSWORD" ssh -o StrictHostKeyChecking=no YOUR_USERNAME@SOME_SITE.COM
カスタム ポートの例:
sshpass -p "YOUR_PASSWORD" ssh -o StrictHostKeyChecking=no YOUR_USERNAME@SOME_SITE.COM:2400
ノート:
sshpass
-f
フラグが渡さ
れると、ファイルからパスワードを読み取ることもできます。-f
時にパスワードが表示されなくなります。ps
この質問に対する答えを何ヶ月も探した後、私は最終的により良い解決策を見つけました。単純なスクリプトを書くことです。
#!/usr/bin/expect
set timeout 20
set cmd [lrange $argv 1 end]
set password [lindex $argv 0]
eval spawn $cmd
expect "password:"
send "$password\r";
interact
に入れ/usr/bin/exp
ますので、次を使用できます。
exp <password> ssh <anything>
exp <password> scp <anysrc> <anydst>
終わり!
公開鍵認証を使用: https://help.ubuntu.com/community/SSH/OpenSSH/Keys
ソース ホストで、これを 1 回だけ実行します。
ssh-keygen -t rsa # ENTER to every field
ssh-copy-id myname@somehost
以上で、パスワードなしで ssh を実行できるようになります。
Expects スクリプトを使用できます。かなり長い間書いていませんが、以下のようになります。スクリプトの先頭に#!/usr/bin/expect
#!/usr/bin/expect -f
spawn ssh HOSTNAME
expect "login:"
send "username\r"
expect "Password:"
send "password\r"
interact
バリアント I
sshpass -p PASSWORD ssh USER@SERVER
バリアント II
#!/usr/bin/expect -f
spawn ssh USERNAME@SERVER "touch /home/user/ssh_example"
expect "assword:"
send "PASSWORD\r"
interact
これは、サーバーにログインする方法です。
ssp <server_ip>
alias ssp='/home/myuser/Documents/ssh_script.sh'
cat /home/myuser/Documents/ssh_script.sh
ssp
:
#!/bin/bash
sshpass -p mypassword ssh root@$1
したがって:
ssp server_ip
@abbotto の答えは私にはうまくいきませんでした。