我需要在同一主机上进行scp和ssh操作。是否可能只验证一次?是否可能只输入一次密码,然后在该主机上进行scp文件,然后ssh并交互式地工作?
更新
我获取HOSTNAME和SSH_PASSWORD。我以前从未登录过那台机器。我需要发送一些文件(可能使用scp),然后使用ssh登录并交互式地在该主机上工作。我想节省时间,只需输入一次密码。我有很多这样的主机...
#/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();
有三种方法可以实现这个目标:
1 - 正确的方式:
2 - 使用expect完成:
3 - 使用pscp代替scp:
sudo apt-get install putty-tools
pscp -scp -pw $password $file_path $login@$IP:$dest_dir
ssh -y joepublic@examplehost.example.com
Password: <joepublic's password>
joepublic@examplehost.example.com
scp joepublic@thathostoverthere:/home/joepublic/thefileireallywantoverhere .
假设您正在使用公钥身份验证,只需设置ssh-agent
即可。如果没有,openssh
有能力创建一个主连接,进一步的连接可以在不需要额外身份验证的情况下使用,但这并不适用于所有ssh
实现。我没有太多地尝试过它,因为对于交互式使用来说有点麻烦,但对于脚本使用可能值得一试。