公開鍵認証を使用してサーバーにSSHで接続し、そのコンピュータでコマンドを実行するシェルスクリプトがあります。これは、ユーザーがサーバーに公開鍵をインストールしたコンピューターで正常に機能します。ユーザーが認証キーを設定していないシステムでこのスクリプトを実行すると、スクリプトはパスワードプロンプトで中断されます。私のスクリプトは引き続き実行され、プロンプトで停止しないようにしたいです。プロンプトをバイパスする方法は?私はMac OSXを使用しています。サーバーはOSXも実行します。
答え1
これを行う1つの方法は、-o PasswordAuthentication=No
SSHコマンドに次のように指定することです。
ssh -o PasswordAuthentication=no user@server
これにより、SSHクライアントがサーバーと通信する必要がある認証オプションのリストからPasswordAuthenticationが削除され、パスワードプロンプトを続行できなくなります。これにより、PubkeyAuthentication(RHostsRSAAuthenticationなど)以外の他の認証メカニズムも機能できます。 pubkey認証を使用したい場合...
ssh -o PreferredAuthentications=publickey user@server
答え2
SSHサーバーに自動的にログインするパスワードを提供するシェルスクリプトを作成できます。
しかし、あなたはそうしなければなりません。予想されるこれはスクリプト用にインストールされたパッケージです。
Redhatでは、Expectパッケージはデフォルトです。ただし、Ubuntuでは別途インストールする必要があります。
コマンドを使用して、次のことを確認できます。
$ rpm -qa | grep expect
レッドハットの場合
$ dpkg -l expect
Ubuntuの場合
次のようにSSHサーバーのパスワードを提供するシェルスクリプトを作成できます。
#!/usr/bin/expect
spawn ssh user@ssh-server-ip
expect "user@ssh-server-ip's password:"
send "password\r"
interact
このスクリプトはあなたのためのトリックを行います。