パスワードを入力せずにSSH経由でサーバーにログインしたいので、ファイルを使用してください。しかし、これはうまくいきません
c52594xx@bsa0483:~$ ls login.txt
login.txt
**c52594xx@bsa0483:~$ ssh bsa10881.fra1 <<login.txt
> ^C
c52594xx@bsa0483:~$
c52594xx@bsa0483:~$ ssh bsa10881.fra1 << login.txt
> ^C
c52594xx@bsa0483:~$
c52594xx@bsa0483:~$ ssh [email protected] <<login.txt
> ^C
c52594xx@bsa0483:~$ cat /etc/issue
Ubuntu 9.10 \n \l**
答え1
他の多くのプログラムと同様に、SSHは標準入力からパスワード入力を受け取らずにstdinで明示的に入力するため、/dev/tty
パスワード入力を(簡単に)リダイレクトできません。
これは、SSHに常に優先される非対話型認証形式のキー認証があるためです。
たとえば、bsa0483ホストでSSHキーペアを作成してssh-keygen -t rsa
実行し、パスワードを入力(一度だけ)するか、単にbsa0483からbsa10881にコピーしてbsa10881に対応する公開キーをインストールできます。ssh-copy-id bsa10881
~/.ssh/id_rsa.pub
~/.ssh/authorized_keys
デフォルトでは、ssh-keygen
SSH秘密鍵をパスワードで暗号化する必要があります。これを実行すると(他の操作は実行しない)、キーを使用するたびにパスワードを入力するように求められます。ただし、自動化の目的でパスワードを設定しないことを選択できます。これにより、パスワードやキーのパスワードフレーズを入力せずにログインでき、スクリプトにパスワードを挿入するよりも安全ではありません。
ssh-keygen
(SSHクライアントが秘密鍵が適切に保護されていることを確認し、SSHクライアントが他の人がその鍵を読み取ることができることを発見した場合は、大きな警告を出力したり、鍵の使用を完全に停止したりするため、これはやや安全です。)
ただし、SSH認証エージェントを使用すると、セキュリティと利便性の最良の組み合わせを実現できますが、1回限りの設定が必要です。 SSHキーペア(bsa0483など)があるシステムにログインし、認証エージェントを起動し(おそらくログインスクリプトで?)、ssh-add
SSHキーを入力してキーパスワードを1回入力できます。これで、エージェントが実行されている限り、キー認証を使用して、このホストから必要な数だけ発信するSSH接続を作成できます。キーパスワードを入力する必要はありません。。
信頼できるホスト間にはプロキシ接続転送を使用するオプションもあるため、認証プロキシがホストAにあり、公開鍵をホストB、C、およびDにコピーした場合は、AからBに移動できます。 SSHの実行その後、BからCまたはDに進みます。どの順序でもパスワードやパスフレーズを求めるメッセージは表示されません。
ただし、パスワードを手動で入力せずにSSHパスワード認証を使用する必要がある場合は、このsshpass
ツールをインストールしてください。apt-get install sshpass
非常に古いUbuntuで利用できることを願っています。詳細は:https://stackoverflow.com/q/12202587/9197000