SSH が標準入力からパスワードを読み取れるようにするにはどうすればよいでしょうか。これはデフォルトでは行われません。
8 に答える
この投稿に基づいて、次のことができます。
SSH_ASKPASSを使用して ssh セッションを開くコマンドを作成します( man sshで SSH_ASKPASS を探します) 。
$ cat > ssh_session <<EOF
export SSH_ASKPASS="/path/to/script_returning_pass"
setsid ssh "your_user"@"your_host"
EOF
注: ssh が tty で要求しようとするのを避けるために、setsidを使用します
パスワードを返すスクリプトを作成します (注意echo "echo )
$ echo "echo your_ssh_password" > /path/to/script_returning_pass
それらを実行可能にする
$ chmod +x ssh_session
$ chmod +x /path/to/script_returning_pass
それを試してみてください
$ ./ssh_session
ssh はセキュア シェルの略であり、ユーザー、ホスト、およびパスワードをプレーン テキスト ファイルに保存すると、ツールを誤解させ、セキュリティ ギャップが生じる可能性があることに注意してください。
たとえば、公式のdebian リポジトリにあるsshpassを使用できます。例:
$ apt-get install sshpass
$ sshpass -p 'password' ssh username@server
昔の記事復活…
まったく同じ問題の解決策を探しているときにこれを見つけました。何かを見つけたので、いつか誰かが役に立つことを願っています:
- ssh-askpassプログラムをインストールします(apt-get、yum ...)
SSH_ASKPASS
変数の設定(export SSH_ASKPASS=/usr/bin/ssh-askpass
)- 端末から、未定義の TERMINAL 変数なしで新しい ssh 接続を開きます (
setsid ssh user@host
)
これは安全であるほど単純に見えますが、まだチェックしていません (ローカルの安全なコンテキストで使用しているだけです)。
ここにいます。
FreeBSD メーリング リストは、 expectライブラリを推奨しています。
ただし、プログラムによる ssh ログインが必要な場合は、実際には公開鍵ログインを使用する必要があります。ただし、外部ライブラリを使用してパスワードを渡す場合と比較して、この方法では明らかにセキュリティ ホールがはるかに少なくなりますstdin
。