Xshell连接和配置

ssh安装配置:

```bash
$apt-get install ssh #注意,有的Linux自带ssh或者ssh2
$vi /etc/ssh/sshd_config #修改ssh默认配置
#修改好配置文件后,启动ssh
$service ssh start #或者
$/etc/init.d/ssh start
  ```

默认配置修改部分:`PasswordAuthentication`和`PermitRootLogin`去掉注释,同时后面的设定改为`yes`。后者若不修改,则不能以*root*登录。

开机启动(包括程序和自制脚本)

由于不同系统适用于不同情况,这里只记载部分

  1. Windows:Windows平台很简单,将可运行的*.bat.EXE文件放入指定用户开始菜单中的启动(Startup)*文件夹中即可。不同用户或者版本具体位置可能不同,但是都在开始菜单文件夹中,选择开始菜单中的任意程序,打开文件所在位置即可定位到。
  2. RHEL6及一些老版本Linux:
    在/etc/rc.d/rc.local中添加需要自启动的代码或者脚本即可。
  3. Kali Linux(至少是Kali2018及以上):
    由于许多新版Linux把rc.d文件按照之前所说的运行级别拆分,并且将rc.local服务化,于是不能像老版本那样直接修改文件来实现开启自启,而是要用到以下方法:
$update-rc.d 程序名称 enable #添加开机启动
  $update-rc.d 程序名称 disable #取消开机启动

这里的程序指的是正常安装的程序,比如ssh,只要其启动文件能在/etc/init.d文件夹中找到即可。
但是,如果要运行自己编写的bash脚本,该怎么处理呢?
我在网络上找了一圈,大多数都提到同样使用update-rc.d命令来处理。可是,哪怕我完全按照那些博客所说的来操作,发现都没法实现目标,怎么回事?
在查阅了一篇介绍update-rc.d引进到Linux的目的的博文后,我猜测出了原因:没有形成/etc/init.d/foo到/etc/rcX.d/S01foo的软链接。
那么,如何制作正确的软链接并使其起到预期效果呢?
具体步骤如下,假设要实现开机启动的自编写脚本名为foo:

  1. 首先制作好要开机启动的脚本并给好权限(比如755),注意该脚本只能实现bash功能而不能启动图形化软件比如chrome;
  2. 将文件复制到/etc/init.d目录下并把工作目录切换到这里;
  3. 建立开机启动链接
$update-rc.d foo start 01 2 . #千万不要少了最后的点号!01为启动顺序,有的博客说用99,我不推荐,原因之后再说;2为运行级别层次,也是之后再解释。
  1. 关键点来啦!检查软链接是否建立。以上文所述为例,检查/etc/rc2.d文件夹中是否有S01foo这个软链接并指向/etc/init.d/foo。
  • 为什么是rc2.d?正如前文所说,运行层次不能选择0和6,而2能相比于1能保证所有用户都能开机启动foo。当然,如果希望只root能开机自起foo,之前的代码将2改为1即可,检查的文件夹也变为了/etc/rc1.d,总之,这不是固定的,根据实际情况选择合适的运行级别层次。
  • 为什么是01?你可以在rcX.d文件夹中先行查看SXX最大到哪个就选择哪个。这个01是启动顺序,从00到99,一般情况下设置01就可以了,若设置99,该脚本可能会很晚才运行。这个部分的目的是实现先后运行,比如foo2要求foo1先执行才能正常运作,则foo2启动顺序的数字要比foo1大,即比foo1完启动。
  1. 软链接没有建立怎么办?这是我按照之前一些博文实验时发现的问题。
    首先明确一点,若软链接没有建立则不可能开机启动,此时,你需要手动创建软链接。
$ln -s /etc/init.d/foo /etc/rc2.d/S01foo #注意不论是在哪个目录下,都必须要绝对地址

确认链接有效并指向正确的脚本之后,再运行一下update-rc.d,就能实现开机自启了。之后可以直接修改/etc/init.d/foo来实现新的脚本功能,比如添加其他脚本的运行等,如./root/Documents/foo2

  1. 如何删除?
$update-rc.d -f foo remove #-f为强制移除。运行完之后可能还要手动删除两个文件夹中的相关文件
  1. 其他:还在寻找可以启动图形软件的方法。