在 linux 上自动替换主机密钥
Replace host key automatically on linux
我有一个连接到 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);
我正在使用 StrictHostKeyChecking 来确保脚本自动接受 ssh 密钥。
当服务器用新主机密钥替换主机密钥时,问题就开始了。我收到错误消息:警告:远程主机标识已更改!
所以我必须通过 运行ning ssh-keygen -R testserver.com 手动删除密钥
之后脚本再次正常工作。
我正在尝试找到一种方法来在密钥发生变化时自动替换它。
从技术上讲,我可以 运行 ssh-keygen -R testserver.com 每次脚本 运行s,但我不喜欢那个解决方案。
到目前为止,我还没有一个很好的自动化方法来替换密钥。
添加另一个将 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);
我有一个连接到 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);
我正在使用 StrictHostKeyChecking 来确保脚本自动接受 ssh 密钥。 当服务器用新主机密钥替换主机密钥时,问题就开始了。我收到错误消息:警告:远程主机标识已更改!
所以我必须通过 运行ning ssh-keygen -R testserver.com 手动删除密钥 之后脚本再次正常工作。 我正在尝试找到一种方法来在密钥发生变化时自动替换它。 从技术上讲,我可以 运行 ssh-keygen -R testserver.com 每次脚本 运行s,但我不喜欢那个解决方案。 到目前为止,我还没有一个很好的自动化方法来替换密钥。
添加另一个将 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);