sftpを使って自動的に接続し、同じコマンドにパスワードをパラメータとして渡して、自動的にログインして一度実行する方法を知りたいです。
例:
私はこれをスクリプトで書いて、これを1つの文で完了しようとしています。
乾杯、
答え1
パスワードのないSSH / SCPを実装する方法は4つあります。
クライアントは新しいパスワードなしのSSHキーを生成して
authorized_keys
サーバーに追加します。上記と同じですが、scpを実行する前にキーにパスワードを設定し、
ssh-agent
それを使用してロックを解除します。scpが実行される前に、SSH接続共有(適切に設定する必要がある場合があります
ControlPersist
)を使用してサーバーにログインしてください。 scpは同じ接続を再利用し、パスワードは必要ありません。秘密のスクリプトを使用してパスワードを入力しますが、ssh / scpはそれを積極的にブロックするので、望むほど簡単ではありません。
最初の2つのオプション(オプション2がより安全です)を見て、Authorized_keysが利用できない場合は、オプション3を調べることをお勧めします。これを行う方法に関するドキュメントがたくさんあります。
オプション4が可能です(他の人がソリューションを公開したのを見ました)。ただし、これを行うには、コンピュータの他のユーザーやスクリプトを読むことができるすべての人にパスワードが公開されることに注意してください。 SSHキーは、ルートを除くすべてのユーザーによって保護され、パスワードで保護されたキーはルートによっても保護されます(Ssh-agentハッカーを除く)。
答え2
使用SSHパスワード
sshpass -p <password> sftp user@host
答え3
次のコマンドを実行します。
ssh-keygen -t rsa -b 2048
それから
touch ~/.ssh/config
次に、次のように構成を編集します。
# host-specific options
Host enigma
HostName mydomain.com
Port 2547
ServerAliveInterval 120
User YOURUSERNAME
TCPKeepAlive Yes
今すぐ接続
ssh-copy-id [email protected]
構成ファイルのホスト名を使用してサーバーに接続できる必要があります。つまりssh enigma
私の設定ファイルには約20の接続があり、すべて短い参照なので、毎回ドメインとパスワードを入力する必要はありません。
これのセキュリティ上の欠陥は、他のホストファイルを生成しないと、すべてのSSH接続が影響を受けることです。 1つのファイルにすべて含まれています。パスワードで保護されています。したがって、ファイルに20個の接続を保存すると、そのパスワードが破損すると20個の接続がすべて破損します。
個人用、業務用、その他複数のホストファイルを使用しているため、パスワードが流出しても大きな問題にはなりません。