zoukankan      html  css  js  c++  java
  • ssh简介和使用

    一、简介

    1. ssh(Secure Shell)是一个安全网络协议

    2.用于远程连接linux服务器

    3. 传输的数据是RSA非对称加密和压缩的

    二、安装

    1. ssh分为服务器和客户端,linux系统默认已经安装

    2. 登录远程机器需要安装客户端 

    sudo apt-get install openssh-client

    3. 开放本机ssh服务需要安装服务器

    sudo apt-get install openssh-server

    三、远程登录

    1. 口令登录

    a. 基本连接命令

    ssh abc@172.1.1.1 连接到服务器默认端口22

    b. 指定端口号连接,因为公网上的机器会被蠕虫搜索,然后用密码字典破解密码,一般都会把端口号改到30000以上,比如36022

    ssh -p 1234 abc@172.1.1.1 连接到服务器端口1234

    2. 公钥登录

    a. 口令登录每次都要输入密码,很不方便

    b. 使用秘钥对进行登录,可以不需要输入密码,安全性也更好

    c. 配置步骤:

    在本机生成秘钥对 ssh-keygen -t rsa,生成一个文件夹.ssh,文件夹下包含私钥id_rsa和公钥id_rsa.pub

    将公钥复制到远程主机,ssh-copy-id aaa@192.168.0.1,ssh-copy-id会把公钥写入远程主机的.ssh/authorized_key文件中

    3. 退出远程登录 Ctrl+D

    4. 通过config配置登录,不用输入用户名和IP地址,更加方便

    a. 在.ssh目录下,新建文件config

    b. 配置

    Host abc // 服务器别名
        HostName 172.168.1.1 // 服务器IP地址 
        User mawr  // 用户名
        Port 22   // 端口号
        IdentityFile ~/.ssh/id_rsa // 私钥文件
        ForwardAgent yes 
        ServerAliveInterval 60 // 保持连接的时间,避免长时间不操作断开连接
        ControlMaster auto
        ControlPath /tmp/ssh_mux_%h_%p_%r
        ControlPersist 72h

    5. 跳过跳板机,直接连接目标服务器

    a. 一般公司是不会让直接连接线上服务器的,需要先连接跳板机,再连接服务器

    b. 每次连接跳板机很不方便,可以通过配置直接登录目标服务器

        Host server-1 server-2 server-3  // 目标服务器列表
        HostName %h // 变量,表示实际IP地址是上面目标服务器的某一个
        User dev  // 用户名
        ProxyCommand ssh jumper nc %h %p // 先登录跳板机,再登录服务器, 也可以ProxyCommand ssh jumper -W %h:%p
        IdentityFile ~/.ssh/id_rsa // 私钥

    四、原理

    1. 服务器启动的时候,自己产生一个公钥

    2. 客户端发送连接请求到服务器,服务器检查IP和数据,如果合法,发送公钥给客户端

    3. 客户端使用公钥和本地的私钥结合成秘钥对,发送给服务器端,建立连接,发送数据

    五、端口转发

    1. ssh -D

    2. ssh -L

    参考:

    https://blog.csdn.net/li528405176/article/details/82810342

    https://www.cnblogs.com/ftl1012/p/ssh.html

    http://blog.shrp.me/How-To-Configure-SSH-Client.html

  • 相关阅读:
    gethostbyname() 用域名或主机名获取IP地址
    recv, recvfrom, recvmsg 从套接口接收一个消息
    献给初学者:谈谈如何学习Linux操作系统
    Linux 文件处理 之扫描目录 DIR
    Python 使用sys模块
    struct dirent和DIR结构体
    职场人必读的文字只花10分钟影响你一辈子!
    信号量与线程互斥锁的区别
    send/sendto/sendmsg函数解析
    互联网常见Open API文档资源
  • 原文地址:https://www.cnblogs.com/june0816/p/7160302.html
Copyright © 2011-2022 走看看