キーを必要とせずに自動パスワードを使用してリモートサーバーにSSHで接続する方法は?

キーを必要とせずに自動パスワードを使用してリモートサーバーにSSHで接続する方法は?

リモートサーバーがあります。パスワードを入力せずに公開鍵を利用してSSHで接続しようとしますが、リモートシステムが公開鍵認証を拒否します。

それでは、最良のアプローチは何ですか?試してみてはいかがでしょうかsshpass

答え1

編集する

私が参照として使用したリンクでより多くのオプションを見つけることができます。

インストールした場合は、sshpassSSH接続を自動化して各コンピュータにパスワードを入力する必要はありません。

SSHPASS='password'
  sshpass -e  your commands here

1. インストールsshpass

sshこれはパスワードをコマンドライン引数として渡すことができる素晴らしい小さなプログラムです。明らかにこれは非常に安全な解決策ではないので、「セキュリティ上の考慮事項」セクションを読んでお勧めしますman sshpass

とにかくディストリビューションリポジトリで使用できます。 Debian ベースのシステムでは、次のコマンドを使用してインストールできます。

sudo apt-get install sshpass

RedHatベースのマシンがないので確認できませんが、検索してみるとわかる限りここ、Fedoraにインストールできる必要があります。

sudo yum install sshpass

インストールが完了したら、簡単に実行してください。

SSHPASS='password'
  sshpass -e your commands

この-eオプションはsshpass変数からパスワードを取得するように指示しますSSHPASS。これはオプションに引数として提供するよりも安全です-p

重要:

接続しようとしているサーバーが不明な場合、または公開鍵がコンピュータに保存されていない場合、この操作は失敗します。これがうまくいかない場合は、リモートシステムに一度(sshまたは)接続して公開鍵を受け入れます。scp

引用する

ネットワーク上のscpを自動化するスクリプト

答え2

sshpassこれは、システムが唯一のユーザーである場合に機能します。しかしこれはかなり非常に悪い考えである。誰もがあなたのコンピュータにシェルアクセスを持っている場合、あなたのパスワードを得ることができます。

一度公開鍵は交換できません。パスワードを含むファイルを保護するexpect必要があります。expsudoまたはrootアクセス権を持つすべてのユーザーがハッキングできるように、ハードドライブに保存されます。しかし、少なくともそれは比較されますsshpass

以下は具体的な操作方法です

答え3

他の回答ですでに説明したように使用しますsshpassが、readパスワードを一時環境変数に保存するコマンドと組み合わせます。これにより、私のパスワードはどこにもプレーンテキストとして記録されません。これは私が使用する1行のコマンドです。

read -s PASS; sshpass -p $PASS ssh <user>@<host adress>

その後、パスワードを入力する必要があり(画面には何も表示されません)、Enterキーを押すと接続が開きます。

関連情報