我知道这并不被推荐,但是有没有可能将用户的密码传递给SCP呢?
作为批处理作业的一部分,我想通过SCP复制文件,而接收服务器当然需要密码,但是,我不能轻易地将其更改为基于密钥的身份验证。
我知道这并不被推荐,但是有没有可能将用户的密码传递给SCP呢?
作为批处理作业的一部分,我想通过SCP复制文件,而接收服务器当然需要密码,但是,我不能轻易地将其更改为基于密钥的身份验证。
使用sshpass:
sshpass -p "password" scp -r user@example.com:/some/remote/path /some/local/path
以便密码不会出现在bash历史记录中。
sshpass -f "/path/to/passwordfile" scp -r user@example.com:/some/remote/path /some/local/path
以上命令将远程主机路径的内容复制到本地。
安装:
apt install sshpass
yum install sshpass
port install sshpass
brew install https://raw.githubusercontent.com/kadwanev/bigboybrew/master/Library/Formula/sshpass.rb
apt-get install sshpass
。 - Jan-Terje Sørensenyum -y install sshpass
进行安装。 - jgrittysshpass -f
passwdfile scp[...]
。这样,密码不会在ps
列表中显示,您可以通过文件权限来保护密码。 - Christopher Schultz只需生成一个 SSH 密钥,如下所示:
ssh-keygen -t rsa -C "your_email@youremail.com"
复制 ~/.ssh/id_rsa.pub
的内容,最后将其添加到远程机器的 ~/.ssh/authorized_keys
文件中。
确保远程机器的权限:0700 用于 ~./ssh 文件夹
和 0600 用于 ~/.ssh/authorized_keys 文件
。
ssh-copy-id -i ~/.ssh/id_rsa.pub <remote_server>
将密钥复制到远程服务器。 - alexandre-rousseau如果您从Windows连接到服务器,则可以使用Putty版本的scp(“pscp”)通过-pw
参数传递密码。
pscp -pw 'MyPa$$word' username@servername:/somedir/somefile ~/somedest
(我不喜欢这样使用putty,但它可以工作)。 - geneoramacurl可以作为替代scp的工具来复制文件,并且它支持在命令行中输入密码。
curl --insecure --user username:password -T /path/to/sourcefile sftp://desthost/path/
scp
必须等待30多秒让我输入密码,但是 curl
立即可以工作。 - Ghost8472 ~~
#!/usr/bin/expect
spawn scp /usr/bin/file.txt root@<ServerLocation>:/home
set pass "Your_Password"
expect {
password: {send "$pass\r"; exp_continue}
}
运行脚本
expect test.exp
我希望那能有所帮助。
ssh-copy-id
命令添加SSH密钥:$which ssh-copy-id #check whether it exists
如果存在:
ssh-copy-id "user@remote-system"
下面是使用expect
工具的示例:
sub copyover {
$scp = Expect->spawn("/usr/bin/scp ${srcpath}/$file $who:${destpath}/$file");
$scp->expect(30,"ssword: ") || die "Never got password prompt from $dest:$!\n";
print $scp 'password' . "\n";
$scp->expect(30,"-re",'$\s') || die "Never got prompt from parent system:$!\n";
$scp->soft_close();
return;
}
没有人提到,但Putty scp (pscp)有一个-pw选项用于密码。
文档可以在此处找到:https://the.earth.li/~sgtatham/putty/0.67/htmldoc/Chapter5.html#pscp
一旦您按照上面的说明设置了ssh-keygen
,您可以执行以下操作:
scp -i ~/.ssh/id_rsa /local/path/to/file remote@ip.com:/path/in/remote/server/
如果您想减少每次键入的次数,可以修改您的.bash_profile
文件并输入以下内容:
alias remote_scp='scp -i ~/.ssh/id_rsa /local/path/to/file remote@ip.com:/path/in/remote/server/
然后在终端中执行 source ~/.bash_profile
。之后,如果在终端中输入 remote_scp
,它应该可以无需密码地运行 scp
命令。