web-dev-qa-db-ja.com

sshにstdinからパスワードを受信させる方法

SSHにstdinからパスワードを読み取らせるにはどうすればよいですか。デフォルトでは行われません。

24
olamundo

ほとんどのSSHクライアントではできません。 Paramiko for Pythonのように、SSH APIを使用して回避できます。すべてのセキュリティポリシーを無効にしないように注意してください。

9
pvoosten

これに基づいて post 実行できます:

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はSecure Shellの略であり、ユーザー、ホスト、パスワードをプレーンテキストファイルに保存すると、ツールが誤解され、セキュリティギャップが生じる可能性があることに注意してください。

19
albfan

sshpass を使用できます。これは、たとえば公式の debianリポジトリ にあります。例:

$ apt-get install sshpass
$ sshpass -p 'password' ssh username@server
13
steffen

蒸留 この答え は単純で一般的なスクリプトを残します:

#!/bin/bash
[[ $1 =~ password: ]] && cat || SSH_ASKPASS="$0" DISPLAY=nothing:0 exec setsid "$@"

passとして保存し、chmod +x passを実行して、次のように使用します。

$ echo mypass | pass ssh user@Host ...

最初の引数にpassword:が含まれている場合は、その入力を出力(cat)に渡します。それ以外の場合は、SSH_ASKPASSプログラムとして設定された後に提示されたものを起動します。

sshSSH_ASKPASS AND DISPLAYセットの両方に遭遇すると、SSH_ASKPASSによって参照されるプログラムを起動し、プロンプトuser@Host's password:を渡します。

4
starfry

古い投稿が復活しています...

まったく同じ問題の解決策を探しているときに私はこれを見つけました、私は何かを見つけました、そして誰かがいつかそれが役に立つと思うことを望みます:

  1. インストールssh-askpassプログラム(apt-get、yum ...)
  2. をセットする SSH_ASKPASS変数(export SSH_ASKPASS=/usr/bin/ssh-askpass
  3. ターミナルから、未定義のTERMINAL変数なしで新しいssh接続を開きます(setsid ssh user@Host

これは、安全であるように十分に単純に見えますが、まだチェックしていません(ローカルの安全なコンテキストで使用するだけです)。

ほら。

4
pier

FreeBSDメーリングリストexpect ライブラリを推奨します。

プログラムによるsshログインが必要な場合は、実際には public key loginsを使用 である必要があります。ただし、外部ライブラリを使用してパスワードを渡す場合と比べて、明らかにこの方法ではセキュリティホールがはるかに少なくなります。 stdin

3
Mark Rushakoff

この機能が必要な理由はわかりませんが、ssh-keygenでこの動作を実現できるようです。

コンピューターにRSA秘密鍵を、サーバーにRSA公開鍵を設定することにより、パスワードを使用せずにサーバーにログインできます。

http://www.linuxproblem.org/art_9.html

2
yyttr3

より良いsshpassの代替案は次のとおりです: https://github.com/clarkwang/passh

sshpassで問題が発生しました。sshサーバーがknown_hostsに追加されていない場合、sshpassはメッセージを表示しません。passhにはこの問題はありません。

0
Badr Elmers