SSH経由で非対話式に接続(可能なオプション)

SSH経由で非対話式に接続(可能なオプション)

sshpass非対話方式(使用)を使用してSSHを介してリモートサーバーに接続するための一般的なbashスクリプトを作成しようとしています。私が知る必要があるのは、SSH経由で接続できる方法です。

これまでは、パスワードとキーファイル(設定されている場合はパスワードを含む)を使用して接続できることがわかりました。

  1. パスワードでログイン

    sshpass -p {ssh-pass} ssh {ssh-user}@{ssh-host} -p {ssh-port}
    
  2. キーでログイン(パスワードは不要)

    ssh -i {ssh-key} {ssh-user}@{ssh-host} -p {ssh-port}
    
  3. キーでログイン(パスワードを使用)

    sshpass -Ppassphrase -p {passphrase} ssh -i {ssh-key} {ssh-user}@{ssh-host} -p {ssh-port}
    
  4. ???

答え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:~$ 

(実際の指紋は偽造されています。)

また、リモートスクリプトを自動化したい場合は、次のことをお勧めしません。アンシプール十分。

関連情報