パスワードなしでsshコマンドを実行しますか?

パスワードなしでsshコマンドを実行しますか?

重複の可能性あり:
パスワードを入力しなくてもよいように SSH を設定するにはどうすればよいですか?

次のコマンドを実行します:- ssh -l admin hostname command しかし、実行するたびにパスワードの入力を求められます。bash ファイルに入れるので、デフォルトでパスワードを設定するにはどうすればよいですか?

答え1

以下の情報は、ここ

パスワードなしのSSHログイン

あなたの目的:

Linux と OpenSSH を使用してタスクを自動化したいと考えています。そのため、ホスト A / ユーザー a からホスト B / ユーザー b への自動ログインが必要です。シェル スクリプト内から ssh を呼び出すため、パスワードを入力したくありません。その方法

まず、ユーザー a として A にログインし、認証キーのペアを生成します。パスフレーズは入力しないでください。

a@A:~> ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/a/.ssh/id_rsa): 
Created directory '/home/a/.ssh'.
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /home/a/.ssh/id_rsa.
Your public key has been saved in /home/a/.ssh/id_rsa.pub.
The key fingerprint is:
3e:4f:05:79:3a:9f:96:7c:3b:ad:e9:58:37:bc:37:e4 a@A

次に、ssh を使用して、ユーザー b として B にディレクトリ ~/.ssh を作成します (ディレクトリが既に存在している場合もありますが、問題ありません)。

a@A:~> ssh b@B mkdir -p .ssh
b@B's password: 

最後に、a の新しい公開鍵を b@B:.ssh/authorized_keys に追加し、b のパスワードをもう一度入力します。

a@A:~> cat .ssh/id_rsa.pub | ssh b@B 'cat >> .ssh/authorized_keys'
b@B's password: 

これからは、パスワードなしで A から b として B にログインできます。

a@A:~> ssh b@B hostname
B

読者からのメモ: SSH のバージョンによっては、次の変更も行う必要がある場合があります。

  • 公開鍵を.ssh/authorized_keys2に保存します。
  • .sshの権限を700に変更します
  • .ssh/authorized_keys2の権限を640に変更します。

答え2

「sshpass」ユーティリティを使用します。これは -p PASSWORD を引数として受け取り、それを ssh に渡します。'sshpass -p MyPassword ssh -l admin hostname command' または環境変数から安全に 'sshpass -e MYPASSWD ssh -l admin hostname command'

詳細については、http://www.debianadmin.com/sshpass-non-interactive-ssh-password-authentication.html

関連情報