linux_ssh

一、什么是ssh

简单说ssh是一种网络协议,用于计算机之间的加密登录.如果一个用户从本地计算机,使用ssh协议登录另一个远程计算机,这种登录是安全的,即使中途被截获密码也不会泄漏.

二、基本用法

  • ssh远程登录
    $ ssh user@host
  • 本地用户名与远程用户名一致,登录时可以省略用户名
    $ ssh host
  • ssh默认端口是22,也就是说,你登录的请求会送进远程主机的22端口,使用p参数,可以修改这个端口
    $ ssh host -p 2222 user@host

三、中间人攻击

ssh之所以能够保证安全,原因在于它采用了公钥加密.流程为:

  • 远程主机收到用户登录的请求,把自己的公钥发给用户.
  • 用户使用这个公钥,将登录密码加密后,发送回来.
  • 远程主机用自己的私钥,解密登录密码,如果密码正确,就同意用户登录.

四、公钥登录

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

如果没有现成的key,可以直接用ssh-keygen生成一个

  • ssh-keygen 之后可以一路回车.有一个问题是,要不要对私钥设置口令(passphrase),如果担心私钥的安全,这里可以设置一个.运行以后,会在$HOME/.ssh/目录下,会新生成两个文件:id_rsa.pub和id_rsa.前者是你的公钥,后者是你的私钥
  • ssh-copy-id user@host 将公钥传送到远程主机host上面.
  • authorized_keys文件,远程主机将用户的公钥保存在登录后的用户主目录的$HOME/.ssh/authorized_keys文件中,公钥就是一段字符串,只要把它追加在authorized_keys文件的末尾就行了.这里不使用ssh-copy-id命令,使用:$ ssh user@host 'mkdir -p .ssh && cat >> .ssh/authorized_keys' < ~/.ssh/id_rsa.pub.这条语句由多个语句组成,依次分解开来看:
    • $ ssh user@host 表示远程登录主机

    • 单引号中的mkdir .ssh && cat >> .ssh/authorized_keys,表示登录后在远程shell上执行的命令

    • $ mkdir -p .ssh 的作用是,如果用户主目录中的.ssh 目录不存在,就创建一个

    • 'cat >> .ssh/authorized_keys' < ~/.ssh/id_rsa.pub的作用是,将本地的公钥文件~/.ssh/id_rsa.pub,重定向追加到远程文件authorized_keys的末尾

      • 如果还是不能免密码登录,打开远程主机的/etc/ssh/sshd_config这个文件,检查下面几行,把注释去掉
      • RSAAuthentication yes
      • PubkeyAuthentication yes
      • AuthorizedKeysFile .ssh/authorized_keys
    • 重启远程主机的ssh服务

      • service ssh restart(ubuntu)/etc/init.d/ssh restart(debian)

五、.ssh/config配置

配置config,可以使用该方法连接远程服务器 ssh api3

  • 配置示例:
    Host  api3  
        hostname 120.26.81.70  
        user zongzhen
    
原文地址:https://www.cnblogs.com/zane-zong/p/6807738.html