我有一个使用以下代码连接到 SFTP 服务器的脚本:
use Net::SFTP::Foreign;
my %cfg = (
user => "$user",
password => "$password",
port => 22,
more => [-o => 'StrictHostKeyChecking no']
);
my $sftp = Net::SFTP::Foreign->new("$host",%cfg);
Run Code Online (Sandbox Code Playgroud)
我正在使用 StrictHostKeyChecking 来确保脚本自动接受 ssh 密钥。当服务器用新密钥替换主机密钥时,问题就会出现。我收到错误:警告:远程主机标识已更改!
因此,我必须通过运行ssh-keygen -R testserver.com手动删除密钥, 之后脚本再次正常工作。我正在尝试找到一种方法来在密钥发生变化时自动替换密钥。从技术上讲,我可以在每次脚本运行时运行ssh-keygen -R testserver.com ,但我不喜欢这个解决方案。到目前为止,我还无法以一种很好的自动化方式来更换密钥。
添加另一个将 UserKnownHostsFile 指向 /dev/null 的选项应该可以解决问题,但从安全角度来看并不建议这样做;-)
use Net::SFTP::Foreign;
my %cfg = (
user => "$user",
password => "$password",
port => 22,
more => [-o => 'StrictHostKeyChecking=no',
-o => 'UserKnownHostsFile=/dev/null']
);
my $sftp = Net::SFTP::Foreign->new("$host",%cfg);
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
625 次 |
最近记录: |