我想使用 shell 脚本从另一台服务器提取文件。我已经编写了一个脚本,我可以在其中执行此操作,但我希望该脚本以非交互方式工作,这样它就不会提示我输入密码,并且如果我硬编码相同的内容并让脚本拥有所需的内容,它就会自动工作。
我之前已经这样做过,FTP
但是,在新服务器中,FTP
连接被阻止,我们只能使用SCP
或SFTP
。我之前的脚本是这样的,它曾经使用过FTP
并且在不需要密码的情况下很好地完成了工作:
#!/bin/bash -vx
ftp -in 100.XXX.XXX.XX<<END_SCRIPT
quote USER username
quote PASS password
bin
prompt off
cd /directory/in/remote/host
lcd /directory/in/local/machine
mget *
bye
END_SCRIPT
SFTP
我在脚本中尝试了类似的方法,它适用于交互模式,但就像FTP
我无法使用SFTP
.以下是我从远程计算机获取特定文件的代码:
#!/bin/bash -vx
path="/tmp/testanks"
sftp [email protected] <<EOT
cd $path
get Bharti*
quit
EOT
我如何更改上面的代码,以便我可以为该脚本提供用户名和密码以使其非交互式。
我知道提供硬编码密码是一个安全问题,但现在我更关心的是立即获取文件。如果我能得到安全的方法以及我想要的答案,我将非常感激。
答案1
答案2
解决方案是使用scp
,将本地的公钥添加到远程authorized_keys文件的末尾。
然后
scp [email protected]:Bharthi/* $path
在本地主机上,查看.ssh
目录,如果没有任何 .pub,请首先执行以下操作(并且仅一次)
ssh-keygen (1)
scp-copy-id [email protected] (2)
- 接受所有默认值,提示时不要输入密码
- 输入用户名@100.XXX的密码