文章目录

  • 一、SSH:Secure Shell
  • 二、Openssh
    • (一)基于密码登录:
    • (二)基于Key的登录验证

一、SSH:Secure Shell

实现的软件工具
1.Openssh:centos默认安装

相关包:

  • openssh
  • openssh-clients
  • openssh-server

配置文件:
客户端:/etc/ssh/ssh_config
服务器端:/etc/ssh/sshd_config

2.Dropbear:开源工具

基于C/S结构
Linux Client: ssh, scp, sftp,slogin
Windows Client:xshell, putty, securecrt, sshsecureshellclient
Server: sshd

二、Openssh

配置文件路径下的文件:私钥、公钥存放位置

[root@CentOS7 ~]#ll /etc/ssh/
total 604
-rw-r--r--. 1 root root     581843 Apr 11  2018 moduli
-rw-r--r--  1 root root       2305 Jul 16 20:09 ssh_config
-rw-------. 1 root root       3907 Apr 11  2018 sshd_config
-rw-r-----. 1 root ssh_keys    227 May 11 14:22 ssh_host_ecdsa_key
-rw-r--r--. 1 root root        162 May 11 14:22 ssh_host_ecdsa_key.pub
-rw-r-----. 1 root ssh_keys    387 May 11 14:22 ssh_host_ed25519_key
-rw-r--r--. 1 root root         82 May 11 14:22 ssh_host_ed25519_key.pub
-rw-r-----. 1 root ssh_keys   1675 May 11 14:22 ssh_host_rsa_key #私钥文件,服务器级私钥
-rw-r--r--. 1 root root        382 May 11 14:22 ssh_host_rsa_key.pub #公钥文件,服务器级公钥

第一次连接确认身份需要人工确认,连接公网主机时,需要自己计算哈希值,是否与公开的哈希值相同

两种登录认证方式:
1.基于密码:每次连接需要手工输入密码
2.基于key:不需要输入密码

(一)基于密码登录:

1.客户端配置

(1)客户端第一次连接服务,会弹出是否连接的提示,可在客户端配置中选择是否弹出提示

[root@CentOS7 ~]#vim /etc/ssh/ssh_config
StrictHostKeyChecking no


家目录生成文件:连接时在提示后面敲完yes,或者客户端设置不提示,会在客户端家目录~/.ssh下生成一个known_hosts 文件;用于Client和Server的双向认证,避免中间人(man-in-the-middle attack)攻击;每次Client向Server发起连接的时候,SSH client通过known_hosts中的host key来验证Server的身份的

[root@CentOS7 ~]#cat .ssh/known_hosts
#格式:DomainName/IpAddress EncryptionAlgorithm HostKey
192.168.37.100 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBPmD8LimHeC8phXcEzH6qOqcdzB0b2xYNN08trPfwBH1HhZf7uG87lhr2b8Ca7ocZ4J+Q9nyMxvufvD3Pm4CPF0=

(2)SSH 客户端使用
常用连接登录语法:

ssh [user@] host [COMMAND]
ssh [-l user] host [COMMAND]

常用选项:
-p port:远程服务器监听的端口
-b:指定连接的源IP,如果客户端有多个IP,可指定某个IP连接服务器
-v:调试模式
-C:压缩方式,节约带宽
-X:支持x11转发,X协议,依赖xserver服务
-t:强制伪tty分配

ssh 默认以当前用户名连接远程主机

[root@CentOS7 ~]#ssh root@192.168.37.100 cat /etc/passwd

-b: 客户端指定IP连接服务器端

服务器端查看连接的主机IP:

-v: 调试模式,查看登录过程

[root@CentOS7 ~]#ssh root@192.168.37.100 -p 2222 -b 192.168.37.7 -v
OpenSSH_7.4p1, OpenSSL 1.0.2k-fips  26 Jan 2017
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 59: Applying options for *
debug1: Connecting to 192.168.37.100 [192.168.37.100] port 2222.
debug1: Connection established.
debug1: permanently_set_uid: 0/0
debug1: key_load_public: No such file or directory
debug1: identity file /root/.ssh/id_rsa type -1
debug1: key_load_public: No such file or directory
debug1: identity file /root/.ssh/id_rsa-cert type -1
debug1: key_load_public: No such file or directory
debug1: identity file /root/.ssh/id_dsa type -1
debug1: key_load_public: No such file or directory
debug1: identity file /root/.ssh/id_dsa-cert type -1
debug1: key_load_public: No such file or directory
debug1: identity file /root/.ssh/id_ecdsa type -1
debug1: key_load_public: No such file or directory
debug1: identity file /root/.ssh/id_ecdsa-cert type -1
debug1: key_load_public: No such file or directory
debug1: identity file /root/.ssh/id_ed25519 type -1
debug1: key_load_public: No such file or directory
debug1: identity file /root/.ssh/id_ed25519-cert type -1
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_7.4
debug1: Remote protocol version 2.0, remote software version OpenSSH_7.4
debug1: match: OpenSSH_7.4 pat OpenSSH* compat 0x04000000
debug1: Authenticating to 192.168.37.100:2222 as 'root'
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: algorithm: curve25519-sha256
debug1: kex: host key algorithm: ecdsa-sha2-nistp256
debug1: kex: server->client cipher: chacha20-poly1305@openssh.com MAC: <implicit> compression: none
debug1: kex: client->server cipher: chacha20-poly1305@openssh.com MAC: <implicit> compression: none
debug1: kex: curve25519-sha256 need=64 dh_need=64
debug1: kex: curve25519-sha256 need=64 dh_need=64
debug1: expecting SSH2_MSG_KEX_ECDH_REPLY
debug1: Server host key: ecdsa-sha2-nistp256 SHA256:j+FKSoZLTx3S9cFLtPfZWnJUCrx9cAONPuCAsS7hfgo
debug1: checking without port identifier
debug1: Host '192.168.37.100' is known and matches the ECDSA host key.
debug1: Found key in /root/.ssh/known_hosts:1
debug1: found matching key w/out port
debug1: rekey after 134217728 blocks
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: rekey after 134217728 blocks
debug1: SSH2_MSG_EXT_INFO received
debug1: kex_input_ext_info: server-sig-algs=<rsa-sha2-256,rsa-sha2-512>
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey,gssapi-keyex,gssapi-with-mic,password
debug1: Next authentication method: gssapi-keyex
debug1: No valid Key exchange context
debug1: Next authentication method: gssapi-with-mic
debug1: Unspecified GSS failure.  Minor code may provide more information
No Kerberos credentials available (default cache: KEYRING:persistent:0)debug1: Unspecified GSS failure.  Minor code may provide more information
No Kerberos credentials available (default cache: KEYRING:persistent:0)debug1: Next authentication method: publickey
debug1: Trying private key: /root/.ssh/id_rsa
debug1: Trying private key: /root/.ssh/id_dsa
debug1: Trying private key: /root/.ssh/id_ecdsa
debug1: Trying private key: /root/.ssh/id_ed25519
debug1: Next authentication method: password
root@192.168.37.100's password:

-X: xclock 是X协议的客户端,xserver服务按照客户端指令,通过显卡GPU绘图;
xclock客户端和xserver可能不在同一台主机
xmanager(包含xshell)安装时给window安装xserver,windows本身不带xserver

-t:类似跳板机,直接跳到某个主机

#最后一个主机不加-t
[root@master ~]#ssh -t 192.168.37.102 ssh -t 192.168.37.103 ssh 192.168.37.101
root@192.168.37.102's password:
root@192.168.37.103's password:
root@192.168.37.101's password:
Last login: Tue Jul 16 21:15:09 2019 from 192.168.37.103

2.服务器端:
修改ssh端口号:生产环境如果是基于口令登录的,建议修改端口

[root@master ~]#vim /etc/ssh/sshd_configPort 2222
[root@master ~]#systemctl restart sshd#客户端连接指定服务器端口
#[root@CentOS7 ~]#ssh root@192.168.37.100 -p 2222


(二)基于Key的登录验证

测试环境:
两台centos7 主机:IP分别为192.168.37.102、192.168.37.103
192.168.37.102 为客户端
192.168.37.103 为服务端主机

配置如下:
1.手动生成公钥、私钥:基于用户级的秘钥对,每个用户有不同的自己的秘钥对;
配置过程中传输公钥时,仍然需要基于密码验证

#192.168.37.102主机操作生成秘钥对
[root@CentOS7 ~]#ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):   #设置保存秘钥路径
Enter passphrase (empty for no passphrase):  #设置私钥密码
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:FJaHeE4S+F++zu1RcgUhu6aE81atdUsRFsBlB5heWcw root@CentOS7.6.localdomain
The key's randomart image is:
+---[RSA 2048]----+
|     ..ooo  o+*&+|
|    . o.=.. o+=.E|
|     . =.. ... ..|
|      ..... .o ..|
|       .So. = =..|
|        .+.+ *...|
|          +.o  . |
|         o.. .   |
|         .o.o    |
+----[SHA256]-----+[root@CentOS7 ~]#ll .ssh/
total 16
-rw------- 1 root root 1675 Jul 16 22:25 id_rsa     #ssh-keygen生成的私钥
-rw-r--r-- 1 root root  408 Jul 16 22:25 id_rsa.pub  #ssh-keygen生成的公钥
-rw-r--r-- 1 root root  748 Jul 16 21:11 known_hosts

2.拷贝主机公钥

#102主机第一次拷贝时需要输入口令
[root@CentOS7 ~]#ssh-copy-id -i /root/.ssh/id_rsa.pub root@192.168.37.103#37.103主机查看家目录文件,拷贝过来的公钥系统改名为authorized_keys
[root@CentOS7 ~]#ll ~/.ssh/
total 8
-rw------- 1 root root 408 Jul 16 22:30 authorized_keys  #37.102主机的公钥,大小相同
-rw-r--r-- 1 root root 396 Jul 16 21:12 known_hosts


102主机 /root/.ssh/id_rsa.pub 和103主机 /root/.ssh/authorized_keys 公钥文件内容相同
3.测试登录

#102主机测试登录103主机
[root@CentOS7 ~]#ssh 192.168.37.103
Last login: Tue Jul 16 21:24:08 2019 from 192.168.37.102

基于SSH的安全远程登录相关推荐

  1. 华为S5700交换机初始化和配置SSH和TELNET远程登录方法

    华为S5700交换机初始化和配置TELNET远程登录方法: 1,交换机开启Telnet服务 <Huawei>system-view       #进入系统视图 [Huawei]telnet ...

  2. Ubuntu下VScode配置ssh免密远程登录

    一 实现步骤 1.在本机与远程服务器上, 输入ssh-keygen -t rsa,然后连续回车直到结束 2.在本机上执行命令 ssh-copy-id 命令 (1).命令介绍 ssh-copy-id命令 ...

  3. 华为交换机和路由器AAA和ssh、telnet远程登录~

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 华为交换机和路由器AAA和ssh.telnet远程登录~ 提华为交换机和路由器AAA和ssh.telnet远程登录~ 一.ssh登录 ...

  4. 华为交换机 ssh和Telnet远程登录配置命令

    华为交换机 ssh和Telnet远程登录配置命令 联系方式 QQ481715271*** ** 简单拓扑 ** LSW4 vlan 20配置地址的原因是SSH Telnet 都可以登录 LSW3 配置 ...

  5. 使用SSH命令行远程登录运行在CloudFoundry上的应用

    2019独角兽企业重金招聘Python工程师标准>>> 当我试图用如下命令行采用SSH远程登录到运行在CloudFoundry环境下的应用时, cf ssh -N -T -L 922 ...

  6. ubuntu16.04安装ssh服务,远程登录

    ubuntu16.04默认是没安装ssh,为了提高效率,安装ssh便于服务器管理, sudo apt-get install openssh-server 安装结束后,运行 netstat -ntlp ...

  7. 10.14 ssh:安全地远程登录主机

    ssh命令 是openssh套件中的客户端连接工具,可以使用ssh加密协议实现安全的远程登录服务器,实现对服务器的远程管理,Windows中的替代工具为Xshell.putty.SecureCRT等. ...

  8. ssh秘钥远程登录服务器

    本机执行 本机生成秘钥文件 ssh-keygen -m PEM -t rsa -b 4096 执行过程中需要输入文件的名字:zhangt_rsa,回车之后输入密码,如果不设置密码,直接回车跳过. 执行 ...

  9. (三)树莓派打开SSH使用putty远程登录

    1.准备         (1).下载Advanced IP Scanner工具查找树莓派ip地址,下载链接: https://download.csdn.net/download/qq_260439 ...

最新文章

  1. 面向中小企业的视频云服务 视频托管
  2. 浅议Python append()与NumPy append()
  3. FPGA的历史、现状和未来
  4. 函数指针---C/C++中int *f(4)和int (*f)(4)的区别
  5. 巧用伪元素和伪类让我们的html结构更清晰合理
  6. Qt for Android获取手机热点开关状态
  7. 《Linux内核设计与实现》读书笔记(十二)- 内存管理
  8. JavaScript | JSON基本格式
  9. python实现猜数字小游戏
  10. python线程监控_Python监控php-fpm进程
  11. lr压测mysql数据库_MySQL数据库性能测试的方法
  12. 如何创建您自己的MP3铃声
  13. MATLAB基本语法速成
  14. java开源图像处理ku_我是这么设计高性能海量数(ku)据(zi)查询系统的(一)
  15. This is a CONNECT tunnel, through which encrypted HTTPS traffic flows.
  16. 请收藏 Navicat 热门话题 | 精选
  17. Scrum: 谁是利益相关者?
  18. 一键脚本搭建docker redis 集群(cluster)
  19. gitlab ce 7部署问题小结
  20. Windows10 DPC_WATCHDOG_VIOLATION 蓝屏故障分析

热门文章

  1. 基于openlayers角度测量功能
  2. 咖啡豆香味开始与气候和生长地区
  3. BIGEMAP离线地图安装部署
  4. 【优质可获投资孵化,强化学习领域首次】强化学习创新创意大赛,报名持续进行中
  5. centos7实现磁盘挂载,解挂,开机自动挂载,解决挂载文件覆盖问题
  6. 回顾我两个月面试阿里、携程、小红书、美团、网易等等(Java岗)
  7. Linux重启网卡报Job for network.service failed because the control process exited with error code. 错误
  8. 达观数据上榜“福布斯中国企业科技50强”,自动化办公技术国内领先
  9. 一次K8S容器内存占用居高不下的排查案例
  10. 网络舆情事件的监测跟踪方案