ssh基础用法

  1. SSH 为 Secure Shell 的缩写,由 IETF 的网络小组(Network Working Group)所制定;SSH 为建立在应用层基础上的安全协议,一般来说用的最频繁的还是用来登录远程主机,他内置了一个sftp的模块使用加密的方式传输,用的端口也是22,比起 不加密的ftp安全性要好很多。最简单的指令格式如下:
    ssh 用户名@主机地址

    当然这是基于端口是默认的情况,如果sshserver的端口不是默认的就会变成下边这样:
    ssh 用户名@主机地址 -p 端口号
    然后会提示输入密码,这个密码就是你要登录的用户名的密码,这个用户必须是存在的,而且是允许登录的才行,一般情况下大家在安装系统时候建立的用户是没问题的,而且密码默认不回显.

    他还可以代理x11协议,把界面传输到本地,但是实际上是在远程主机运行,但是需要远程主机安装xauth,并且,本地和远端都启动x11代理才可以,实际测试的时候有的应用可能是不支持的,此外,如果本地系统是win的话,可能不好用,如果是优麒麟那么只要网速足够还是挺好的,缺点是,有可能无法使用中文输入法,只能复制粘贴,虽然可以通过配置的方式让输入法启动,但是我没成功过。另外就是有一个端口映射的作用,一般来说称之为ssh隧道,可以把远端的端口映射到本地,也可以把本地的端口映射到远程,也可以改成双向的,这样可以用作内网穿透,或者是把本地服务暴露在远端,也可以把远端的端口变成本地访问,而且是用ssh加密过的不用担心被窃听等,一般情况下开发会用的比较多,把数据库的端口映射到本地的某个端口,直接访问,不用把公网的对应端口打开,提高安全性,再比如说vnc,把vnc的端口映射到本地,虽然vncview提示不加密但是中间传输的数据是经过ssh加密的,不用担心被窃听,而且可以关闭对应端口的防火墙,不用担心被别人扫描到。ssh可以禁用密码登录只使用密钥登录,也可以两者并存,只要有一个公钥和私钥,然后把公钥放到特定的文件里就可以直接使用私钥免密登录。

  2. SSh的一个小技巧,ssh如果在一段时间不响应的话可以修改心跳时间,每隔一定时间发送一个空包,保持响应,一般来说我不建议设置的时间超过30,如果是网络环境差点30都可能断,一般设置成15,极端情况设置成5,这里以秒为单位。
    还有就是如果退出了ssh,那么正在运行的程序就会被杀死,可以使用screen命令让程序运行在后台,然后Ctrl+a+d来返回,这样就可以安心的退出ssh,不用担心程序挂了,恢复的命令也有。

  3. 如果是第一次登录一个主机会出现一个提示语,大概如下:

这个就是你第一次登录一个新主机的时候给的提示,至于为什么给这个提示,是因为ssh的通讯过程导致的,算是一种验证方法,具体大家可以查一下百度,需要注意的是,在这里只有输入yes才可以继续,单纯的一个y或者是回车是不可以的,
然后输入密码登录,成功登录之后会显示一些欢迎语,和最后一次的登录地址。

最下边的看起来是和上边的一致的,但是实际上是ssh登录的结果,因为终端的显示方式就是“用户名@主机名”这种格式
登录成功之后就可以用终端在远程主机执行一些命令操作

华丽的分割线
可能大部分没有尝试过的用户会发现在使用远程登录自己主机的时候会被拒绝,这是因为ssh分为两部分,一部分是server,一部分是client,client就是我们上边用的ssh命令,server部分桌面环境不一定有,Ubuntu的server版会在安装的时候让用户选择是否安装server,如果没有的话可以直接安装openssh-server,需要注意的是,我们自己安装的server默认禁止root用户登录,所以要想让root用户远程登录需要修改server的配置文件,再次就不细说的,网上一把教程节省资源。

本文撰写过程中参考了以下文章:
https://www.ubuntukylin.com/ukylin/forum.php?mod=viewthread&tid=193097
https://www.ubuntukylin.com/ukylin/forum.php?mod=viewthread&tid=193211