如何在C语言程序中使用SSH

1,这个功能最好用脚本实现。

2.最好做成dsa公钥认证方式,也就是ssh免密码登录。

3.ssh的密码输入被绑定到TTY,而不是stdin,因此它不能被重定向(到管道)。

3.1.如果你想通过程序输入ssh密码,你应该模拟TTY或者让ssh认为你的输入直接来自TTY。

3.2.或者,您也可以自己实现最简单的ssh协议。

3.3,程序模拟TTY,一般直接用expact库,在脚本中很方便,但是因为C处理字符串太笨拙了...

4.登录后,与ssh的交互需要通过管道进行。写模拟控制台中键入的字符,读取命令输出数据;至于命令返回值...读echo $?输出它。

5.如果命令本身有输入/输出提示,比如rm xxx会让你按Y什么的,那么你必须自己捕捉这个提示,然后在管道里写一个“Y\n”。因此...也许是方便期待。

6.可以做一个脚本,使用expect完成脚本中的登录动作,然后发出interact命令进入交互模式;然后使用popen()在C中执行这个脚本,这样就避免了登录问题,但还是要处理命令行交互问题(也就是回答你确定吗之类的问题,当然这可以通过为命令传入-y之类的参数来绕过,但有些命令可能不支持)。