通过SSH写出文件,有时接受RSA密钥,有时不接受

时间:2015-09-03 23:05:30

标签: python c ssh rsa scp

背景

我正在使用scp将文件从我的主机(Ubuntu 15)传输到我网络中的另一台机器(也是Ubuntu 15)。我已经完成了密钥交换过程。主程序用C语言编写,它调用包含scp的shell命令的Python脚本以及用于错误处理和文件创建的一些逻辑。

问题 当我运行C程序,它创建我感兴趣移动的输出时,与远程主机的SSH连接有时会接受我的RSA密钥,有时在同一会话期间不接受。 C代码如下所示:

if (-1 == system(sndCtl.txVoiceMessageCommand)) {
            E_FATAL("Command Line invocation of txMessage.py failed");

sndCtl.txMessageCommand的输出形式如下:

khtad>python3 txMessage.py localfilepath useraccout@remotehost:remotefilepath

工作正常 - 它将本地文件发送到远程位置,我们都很好。但是,当我在同一会话期间连续几次运行代码时,有时文件将在没有密码提示的情况下传输(因为它应该,机器已经交换了RSA密钥并且彼此具有写入权限),但有时它会要求输入密码。当提示输入密码时,如果在命令行中输入了密码,则文件传输将按预期进行。如果不是,则文件传输失败。

令人费解的是,它有时会起作用。如果它总是失败,我想我可以在这一点找到错误。这可能是一个时间问题吗?我应该在我的python代码中包含sleep()以确保scp有时间交换密钥吗?完全是我缺少的东西吗?

编辑更新:在我续订其DHCP租约后,与远程主机的密钥交换也会失败,无论地址是否相同。这是正常行为吗?

0 个答案:

没有答案