SSH を使用してリモートの Linux サーバーにログオンする際のパスワード入力を自動化したいと考えています。
実行可能なbashスクリプトを作成しました
#! /bin/bash
ssh user@machine.remote.host
しかし、パスワード入力を自動化する方法はありますか?
SSH を使用してリモートの Linux サーバーにログオンする際のパスワード入力を自動化したいと考えています。
実行可能なbashスクリプトを作成しました
#! /bin/bash
ssh user@machine.remote.host
しかし、パスワード入力を自動化する方法はありますか?
ssh-keygen # generate a pair of RSA keys
scp ~/.ssh/id_rsa.pub user@machine.remote.host:id_rsa.tmp # copy the public key to remote host
ssh user@machine.remote.host # ssh to remote server, this time it requires password
cat id_rsa.tmp >> .ssh/authorized_keys # add the public key to authorized_keys
その後、ログオフしてパスワードなしでログオンできます。
(SSH キーを介して) パスワード入力をスキップすることについて話している場合を除き、expectは対話を自動化します。
set pass "MYPASSWORD"
spawn ssh ME@MYHOST
expect -re "assword: *$";
send -- "$pass\r"
expect -re "\$ *$";
interact
sshpass
Debian / Ubuntu Linux にインストール
次のコマンドを入力します。
$ sudo apt-get install sshpass
sshpass の使用方法を教えてください。
server.example.com
というパスワードで呼び出された ssh サーバーにログインしますt@uyM59bQ
。
$ sshpass -p 't@uyM59bQ' ssh username@server.example.com
シェル スクリプトでは、ホスト キー チェックを無効にする必要がある場合があります。
$ sshpass -p 't@uyM59bQ' ssh -o StrictHostKeyChecking=no username@server.example.com
rsync を使用して /var/www/html をバックアップするにはどうすればよいですか?
パスワード認証を使用して SSH 経由で rsync を実行し、コマンド ラインでパスワードを渡します。
$ rsync --rsh="sshpass -p myPassword ssh -l username" server.example.com:/var/www/html/ /backup/
私はこれを広範囲に調べました。これが、Pythonを学ぶことにした理由です。短い答えは「いいえ」です。標準の bash では、パスワードを ssh プロンプトに渡す方法はありません。この機能を提供できるexpectやsshpassのようにインストールできるものがいくつかありますが、それらを使用するかどうかは、スクリプトを実行しているサーバーにフリーローミングがあるかどうかによって異なります。Pythonを学びたいと思ったことがあるなら、これは学ぶのに良いものです. この機能が組み込まれており、使いやすい「Fabric」という python モジュールがあります。
申し訳ありませんが、これは本当の答えではありません。私はまさにあなたがいた場所にいたので、私のアドバイスを伝えようと思いました....