パスワードを要求せずにあるコンピュータから別のコンピュータにファイルをコピーします。

パスワードを要求せずにあるコンピュータから別のコンピュータにファイルをコピーします。

現在このコマンドを使用しています。別のコンピュータにあります(ip1)。

scp file.txt root@ip2:/home/praveen/test.c /home/praveen

このコマンドは、パスワードの入力を求めるメッセージを表示します。

一部のシェルスクリプトはそれを使用しており、いくつかのcrontabファイルでそのスクリプトを呼び出しています。だから毎回パスワードを入力することはできません。パスワードの入力を無効にする方法、またはパスワードを再入力する必要がないように、どこかでパスワードを入力する別の方法はありますか?

ssh-keygenこのスクリプトでのみ作業を行う必要があるため、使用できません。この機能を使用すると、ssh-keygen再度パスワードの入力を求められません。私はこれをしたくありません。残りは正常に進むべきです。

答え1

ssh-keygen鍵交換が利用できない理由は不明です。私はこれが推奨される慣行だと思います。

expectもう一つの方法は、コマンドを使用することです(オンラインマニュアルページ)。これにより、対話中にユーザーの介入が排除されます。名前が示すように、プロンプトを受け取り、指定された方法でそれに応じて応答します。

このソリューションをチェックしてください自動化されたSSHの使用expect。数行を引用するには:

# Look for passwod prompt
expect "*?assword:*"
# Send password aka $password
send -- "$password\r"

2行目は表示されるプロンプトを指定します。その場合はパスワードをお願いします。 4行目はパスワードをサーバーに送信します。

答え2

リモートサーバーが許可している場合は、ftpを使用できます。以下は、この目的に使用するシェルスクリプトの例です。

HOST='remote.server.com'
USER='domainname/usrid'   
PASSWD='p@@ssw0rd'
cd /path/to/local/directory/containing/the/file/to/be/transferred
`ftp -n $HOST <<END_SCRIPT
quote USER $USER
quote PASS $PASSWD
cd /diretory/on/remote/server
put file2transfer.dat 
bye    
quit
END_SCRIPT`

答え3

誰も実際の答えを投稿していないからです。

はい、コメントに記載されているとおりです。公開/秘密鍵のペアを生成する必要があります。

以下は2つのマニュアルです:

ssh-agentその後、キーに指定されたパスワードを入力する必要がないように、キーをメモリにロードするという利点を享受できます。キーは現在のセッション中にメモリに保存されるためです。まずパスワードを設定する必要はありませんが、秘密鍵を持つ誰かがそれを使用してあなたを傷つける可能性があるので、そうすることをお勧めします。


もちろん、鍵を削除したり、~/.ssh/authorized_keysリモートホストから公開鍵を削除したりできます。その後、彼はあなたのパスワードを再度尋ねるメッセージを表示します。

答え4

簡単な解決策は次のとおりです。

echo "password" | scp -r myfile user@remotehost:/home/user/destination 

関連情報