ubuntu启动建立ssh连接失败

曾经有个问题一直困扰着我,就是我想在ubuntu启动的时候建立ssh连接,用的命令是ssh -fCNR xxxx:localhost:xxxx username@remotehost关于这个,我之前有篇文章讲「端口转发),但是一直不成功。

我当时以为是在系统启动的时候不能干这个事,可能ssh需要的一些进程还没有启动起来。所以就放弃了,但是最近经常重启机器又忘记启用这个ssh通道了,搞得我很不方便。又开始「往事重提」,疯狂的在网上找资料,渐渐的开始怀疑自己之前的武断。最后的实验结果发现,不是在启动的时候不能ssh,是因为它需要输入密码,而启动的时候没给提供输入密码的界面(这也不合理),所以就不成功。

但是,这么明显的点思维如此‘严密’的宝哥又怎么会没想到呢。其实我已经把我本地的ssh-key传到了我的remotehost(关于这点,我也有篇文章讲解:ssh-keygen生成密钥),所以我以为,这样就不需要密码了嘛。

但是,我没有想到的是,系统启动的时候执行的任何命令(除了~/.profile里的内容),应该都是以root身份执行的。so。。。我按照这个想法,执行ssh-keygen的时候前面加个sudo,这样就是生成了root的密钥对在/root/.ssh下面,然后,sudo ssh-copy-id -i /root/.ssh/id_rsa.pub username@remotehost,把root的公钥传到远程服务器。然后先sudo /etc/rc.local运行一下,然后验证是否已经建立通道。然后,我就会心的笑了。。。

重启机器后,搜索一下进程,有执行该命令的进程存在,验证一下通道,ssh通道建立成功,然后,我就哈哈大笑了。。。。