GNU/Linux >> Linux の 問題 >  >> Linux

sshpassを使用したLinuxでのSSHパスワードの自動化

[編集者注、2021年11月29日:コマンドラインでパスワードを提供するすべての例には、パスワードがユーザーのシェル履歴(サポートされている場合)にキャプチャされるか、プロセスリストのすべてのシステムユーザーに表示されるリスクが含まれます。セキュリティの専門家は、すべてのファイルを削除してシェルログをクリアすることをお勧めします。]

リモートシステムへのファイルの接続と転送は、システム管理者が常に行うことです。 Linuxプラットフォームの多くのシステム管理者が使用する重要なツールの1つは、SSHです。 SSHは、次の2つの認証形式をサポートしています。

  1. パスワード認証
  2. 公開鍵認証

公開鍵認証は、これら2つの方法の中で最も安全な形式と見なされていますが、パスワード認証が最も一般的で最も簡単です。ただし、パスワード認証では、ユーザーは常にパスワードの入力を求められます。この繰り返しは退屈です。さらに、SSHをシェルスクリプトで使用する場合は、手動による介入も必要です。 SSHパスワード認証を使用するときに自動化が必要な場合は、sshpassと呼ばれるシンプルなツール 不可欠です。

sshpassとは何ですか?

sshpass ユーティリティは、 Keyboard-interactiveを使用してSSHを実行するように設計されています パスワード認証モードですが、非対話型の方法です。

SSHは、直接TTYアクセスを使用して、パスワードが実際に対話型キーボードユーザーによって発行されていることを確認します。 sshpass 専用のTTYでSSHを実行し、SSHをだまして、対話型ユーザーからパスワードを取得していると思い込ませます。

sshpassをインストールする

sshpassをインストールできます この簡単なコマンドで:

# yum install sshpass

sshpassを使用する

sshpassの後に実行するコマンドを指定します オプション。通常、コマンドはsshです。 引数付きですが、他のコマンドにすることもできます。ただし、SSHパスワードプロンプトは現在、sshpassにハードコードされています。 。

sshpassの概要 コマンドについては以下で説明します:

sshpass [-ffilename|-dnum|-ppassword|-e] [options] command arguments

場所:

-ppassword
    The password is given on the command line. 
-ffilename
    The password is the first line of the file filename. 
-dnumber
    number is a file descriptor inherited by sshpass from the runner. The password is read from the open file descriptor. 
-e
    The password is taken from the environment variable "SSHPASS".

sshpassの価値と使用法をよりよく理解するため 、SSH、Rsync、Scp、GPGなどのいくつかの異なるユーティリティを使用したいくつかの例を見てみましょう。

例1:SSH

sshpassを使用する SSHを使用してリモートサーバーにログインします。パスワードが!4u2tryhackであると仮定しましょう 。以下は、sshpassオプションを使用するいくつかの方法です。

A. -pを使用してください (これは最も安全性の低い選択肢と見なされているため、使用しないでください):

$ sshpass -p !4u2tryhack ssh [email protected]

-p シェルスクリプトで使用する場合、オプションは次のようになります。

$ sshpass -p !4u2tryhack ssh -o StrictHostKeyChecking=no [email protected]

B. -fを使用します オプション(パスワードはファイル名の最初の行である必要があります):

$ echo '!4u2tryhack' >pass_file
$ chmod 0400 pass_file
$ sshpass -f pass_file ssh [email protected]

$ chmod 0400 pass_file パスワードファイルのセキュリティを確保するために重要です。 RHELのデフォルトのumaskは033です。これにより、ファイルを世界中で読みやすくすることができます。

これが-fです シェルスクリプトで使用する場合のオプション:

$ sshpass -f pass_file ssh -o StrictHostKeyChecking=no [email protected]

C. -eを使用します オプション(パスワードはファイル名の最初の行である必要があります):

$ SSHPASS='!4u2tryhack' sshpass -e ssh [email protected]

-e シェルスクリプトで使用する場合のオプションは次のようになります:

$ SSHPASS='!4u2tryhack' sshpass -e ssh -o StrictHostKeyChecking=no [email protected]

例2:Rsync

sshpassを使用する rsyncを使用 :

$ SSHPASS='!4u2tryhack' rsync --rsh="sshpass -e ssh -l username" /custom/ host.example.com:/opt/custom/ 

上記は-eを使用しています オプション。パスワードを環境変数SSHPASSに渡します。

-fを使用できます このように切り替えます:

$ rsync --rsh="sshpass -f pass_file ssh -l username" /custom/ host.example.com:/opt/custom/

例3:Scp

sshpassを使用する scp:を使用

$ scp -r /var/www/html/example.com --rsh="sshpass -f pass_file ssh -l user" host.example.com:/var/www/html

例4:GPG

sshpassを使用することもできます GPGで暗号化されたファイルを使用します。 -fの場合 スイッチが使用され、参照ファイルはプレーンテキストです。 GPGでファイルを暗号化して使用する方法を見てみましょう。

まず、次のようにファイルを作成します。

$ echo '!4u2tryhack' > .sshpasswd

次に、gpgを使用してファイルを暗号化します コマンド:

$ gpg -c .sshpasswd

平文を含むファイルを削除します:

$ rm .sshpasswd

最後に、次のように使用します。

$ gpg -d -q .sshpasswd.gpg | sshpass ssh [email protected]

まとめ

sshpass は、システム管理者に非常に役立つシンプルなツールです。これは、決して、公開鍵認証であるSSH認証の最も安全な形式を上書きするものではありません。ただし、sshpass sysadminツールボックスに追加することもできます。

[無料のオンラインコース:Red HatEnterpriseLinuxの技術概要。 ]


Linux
  1. UNIX / Linux で SSH を使用して Rsync をセットアップする方法 (パスワードなしの rsync)

  2. sshpass コマンド:SSH による非対話型パスワード認証

  3. Linuxでパスワードを確認するには?

  1. SSHPass:パスワードなしで(非対話的に)スクリプトを使用してサーバーにSSHで接続する方法

  2. パラメータとしてクリアテキストパスワードを使用したSSHログイン??

  3. Linux で空のパスワードで ssh を許可する方法

  1. LinuxでSSHを使い始める

  2. UNIX / Linux で SSH を使用してパスワードなしで Rsync をセットアップする方法は?

  3. リモートパスワードの入力を求める SSH による Rsync