2

同じホストにscpしてからsshする必要があります。一度だけ認証することは可能ですか?パスワードを一度入力してからscpファイルを入力し、そのホストでsshを実行して、インタラクティブに作業することはできますか?

アップデート

HOSTNAMEとSSH_PASSWORDを取得します。以前にそのマシンにログインしたことはありません。いくつかのファイルを送信し(おそらくscpを使用して)、sshを使用してログインし、そのホストでインタラクティブに作業する必要があります。時間を節約してパスワードを一度だけ入力したい。私はそのようなホストをたくさん持っています...

4

4 に答える 4

1

これを実現するには、次の3つの方法があります。

1-適切な方法:

2- expectでそれを行う:

  • これは、expectを使用してsshを実行し、パスワードを提供する方法の例です

3- scpの代わりにpscpを使用します。

  • pscpは「putty-tools」の一部です。sudo apt-get install putty-tools
  • pscpを使用すると、cmdlineオプションの一部としてパスワードを指定できます
  • 使用例:pscp -scp -pw $password $file_path $login@$IP:$dest_dir
于 2012-11-09T16:28:07.723 に答える
1

リモートマシンにアカウントがあると仮定すると、最初にSSHを使用して接続を確立し、次にscpを使用して必要なファイル間でコピーします(次のようになります)。

ssh -y joepublic@examplehost.example.com

Password: <joepublic's password>

joepublic@examplehost.example.com

scp joepublic@thathostoverthere:/home/joepublic/thefileireallywantoverhere .
于 2012-11-09T16:29:01.173 に答える
1

公開鍵認証を使用していると仮定して、を設定するだけですssh-agent。マスター接続を作成する機能がない場合opensshは、追加の認証なしでさらに接続を使用できますが、これはすべてのssh実装に共通しているわけではありません。インタラクティブに使用するには少し面倒なので、あまり遊んでいませんが、スクリプトで使用することを検討する価値があるかもしれません。

于 2012-11-09T16:54:51.920 に答える
1
#/usr/bin/perl

use strict;
use warnings;
use Net::OpenSSH;

$ssh = Net::OpenSSH->new(host => '...', user => '...', password => '...');
$ssh->scp_put('/local/path/to/file', '/remote/path/to/file');
$ssh->system();
于 2012-11-09T22:58:02.073 に答える