两个具有单一身份验证的scp和ssh进程

时间:2012-11-09 16:17:31

标签: shell ssh scp

我需要scp然后ssh到同一主机。是否有可能只进行一次身份验证?是否可以输入一次密码,然后输入scp文件,然后在该主机上输入ssh并以交互方式工作?

更新

我获得了HOSTNAME和SSH_PASSWORD。我之前从未登录过那台机器。我需要发送一些文件(可能使用scp),然后使用ssh登录并以交互方式处理该HOST。我想节省时间和输入密码一次。我有很多这样的主人......

4 个答案:

答案 0 :(得分:1)

有三种方法可以实现这一目标:

1 - 正确的方式:

2 - 使用expect

进行操作

3 - 使用pscp代替scp:

  • pscp是“putty-tools”的一部分:sudo apt-get install putty-tools
  • pscp允许您提供密码作为cmdline选项的一部分
  • 样本用法:pscp -scp -pw $password $file_path $login@$IP:$dest_dir

答案 1 :(得分:1)

假设您在远程计算机上有一个帐户,请使用SSH first 建立连接,然后使用scp复制所需文件 - 例如:

ssh -y joepublic@examplehost.example.com

Password: <joepublic's password>

joepublic@examplehost.example.com

scp joepublic@thathostoverthere:/home/joepublic/thefileireallywantoverhere .

答案 2 :(得分:1)

假设您正在使用publickey身份验证,只需设置ssh-agent即可。如果不是openssh能够创建主连接,则可以使用其他连接而无需其他身份验证,但这并非所有ssh实现都通用。我没有玩过多少,因为它对于交互式使用来说有点麻烦,但它可能值得研究脚本使用。

答案 3 :(得分: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();