sshpass
非対話方式(使用)を使用してSSHを介してリモートサーバーに接続するための一般的なbashスクリプトを作成しようとしています。私が知る必要があるのは、SSH経由で接続できる方法です。
これまでは、パスワードとキーファイル(設定されている場合はパスワードを含む)を使用して接続できることがわかりました。
パスワードでログイン
sshpass -p {ssh-pass} ssh {ssh-user}@{ssh-host} -p {ssh-port}
キーでログイン(パスワードは不要)
ssh -i {ssh-key} {ssh-user}@{ssh-host} -p {ssh-port}
キーでログイン(パスワードを使用)
sshpass -Ppassphrase -p {passphrase} ssh -i {ssh-key} {ssh-user}@{ssh-host} -p {ssh-port}
???
答え1
おめでとうございます。あなたはセキュリティに関して重要であり、時には痛みを伴う教訓の1つを学びました。
自動化とセキュリティは一貫性がありません。
スクリプトで自動的に実行するには、ユーザー側の追加の対話なしにスクリプトがすべての資格情報にアクセスできることを確認する必要があります。ただし、これは上記の資格情報を提供する必要があることを意味します。何とか、これはコマンドラインに渡すことを意味します(悪い読める人は誰でも予測できるので、アイデアps
)またはスクリプトユーザーだけが読めるファイルに保存されます。
スケジューラを介して実行され、非対話型SSHを必要とする自動化されたスクリプトの場合、私が好む解決策は、その目的にのみ使用されるパスワードのないキーを生成することです。これにより、authorized_keys
クライアント側からファイルを受信して何を制御できます。それができ、できません。その後、このキーはスクリプトを実行しているユーザーだけが読み取ることができるファイルに保存されます。
一方、これが手動で実行したいスクリプトであり、パスワードを入力するように求められる不便さを望まない場合は、次のようにします。SSHキーエージェント。
GNOMEデスクトップ環境を使用している場合は、gnome-keyringがSSHキーブローカーとして機能し、実際に動作することを知っていて、単にキーを読むことができます。ssh-add
これにより、SSHプロセスはどこからでもgnomeデスクトップを起動できます。 it 環境は、セッションを終了するかキーリングからキーを消去するまでエージェントに接続し、保存された資格情報を使用できます。
shadur@luminosity:~$ ssh-add .ssh/id_ed25519
Enter passphrase for .ssh/id_ed25519:
Identity added: .ssh/id_ed25519 (Shadur - 2020)
shadur@luminosity:~$ ssh-add -l
256 SHA256:e3gvrdo**************FxJCtPo7DYN Shadur - 2020 (ED25519)
shadur@luminosity:~$
(実際の指紋は偽造されています。)
また、リモートスクリプトを自動化したい場合は、次のことをお勧めしません。アンシプール十分。