SSH的远程登录

关键词:自动化工具,目录

整体梳理如下:

主机密码登录:

当我购买一个一个远程主机之后会给我提供

  • host (就是那个IP地址)
  • user (就是用户名字,一般新主机都是root, 登录后可以自己新建其他的用户)
  • password

我要使用这两者来登录需要

1
2
ssh user@host
然后等待输入密码

登录之后的其他操作

  • 我登录之后,新添加用户adduser username,尽量不要使用root来操作
  • 以后我要直接远程登录此新加用户,对应的user就要填新添加的 username
  • ssh username@host
  • 然后使用密码登录

NOTICE:我们新添加用户之后,此用户是没有sudo命令的,所以我们要给新增的用户加上此权限,如下:

  • 1、用root帐号登录或者su到root。

  • 2、增加sudoers文件的写权限: chmod u+w /etc/sudoers或者chmod 700 /etc/sudoers

  • 3、vim /etc/sudoers 找到 root ALL=(ALL) ALL 在这行下边添加 username ALL=(ALL) ALL (ps:suername代表是你要添加sudo权限的用户名)

  • 4、除去sudoers文件的写权限:chmod u-w /etc/sudoers或者chmod 400 /etc/sudoers

    文件权限 rwx 对应 421

公钥登录

然后为了不再使用密码登录,我们就要使用公钥登录

原理

所谓”公钥登录”,原理很简单,就是用户将自己的公钥储存在远程主机上。登录的时候,远程主机会向用户发送一段随机字符串,用户用自己的私钥加密后,再发回来。远程主机用事先储存的公钥进行解密,如果成功,就证明用户是可信的,直接允许登录shell,不再要求密码。

第一步:生成需要的公钥

ssh keygen (如果已经有了公钥了们就可以不用再生成,当然想再生成其他新的也可以)
默认生成的私钥和公钥的名字是id_rsaid_rsa.pub
如果已经有了key,不想新生成的key覆盖原来的key,我们使用ssh keygen newkeyname
生成新的key。

1
ssh-keygen ~/.ssh/id_rsa.erhua

上面的id_rsa.erhua就是我们指定的文件名,这时~/.ssh目录下会多出id_rsa.erhuaid_rsa.erhua.pub两个文件,id_rsa.erhua.pub里保存的就是我们要使用的公钥。

第二步:将公钥复制到对应的远程主机上去,并配置远程主机
  1. 使用scp将公钥文件复制到远程主机的.ssh/文件内
  2. 并把公钥内的内容复制追加到远程主机.ssh/authorized_keys文件内(如果没有此文件,须新建)
  3. 检查/etc/ssh/sshd_config文件内一下三项内容是否全部开启:RSAAuthentication yes,PubkeyAuthentication yes,AuthorizedKeysFile .ssh/authorized_keys
  4. 重启远程主机的ssh服务
    1
    2
    3
    4
    // ubuntu系统
      service ssh restart
      // debian系统
      /etc/init.d/ssh restart

第三步:配置本地的config文件快速连接host

为了让登录更加的轻松,简化ssh user@host的形式,我们可以配置config文件来实现

  1. 打开本地.ssh/config文件,若没有,则新建
  2. 已如下形式保存一个远程登录的信息

    1
    2
    3
    4
    Host erhua # 连接时用的名字
    HostName 207.148.14.198 # 远程主机的host地址
    User erhua # 要登录的远程主机的账户(就是在host上的用户名字root或者其他新建)
    IdentityFile ~/.ssh/id_rsa # 你的私钥地址,相当于密码
  3. 使用此方式登录 —— ssh erhua