1、ssh客户端工具

  • 查看参数和帮助方法

==ssh --help==

==man ssh==

  • 常见参数

    • windows
    • linux
    • macos
    • 提供的ssh命令,会有些区别,查看帮助后使用即可。

    linux下ssh远程登录

  1. 简单用法
  2. [root@web-7 ~]#ssh root@10.0.0.41
  3. root@10.0.0.41's password:
  4. Last login: Fri Apr 22 16:48:04 2022 from 10.0.0.7
  5.  
  6. -p ssh端口
  7. -l 远程用户名,如果不指定用户,会使用当前默认的登录用户名。
  8.  
  9. [root@web-7 ~]#ssh -p 22 -l root 10.0.0.41
  10. root@10.0.0.41's password:
  11. Last login: Fri Apr 22 17:44:00 2022 from 10.0.0.7

windows下ssh登录

cmd命令行提供的ssh命令

  1. [C:\~]$ ssh root@10.0.0.7 22
  2.  
  3. Connecting to 10.0.0.7:22...
  4. Connection established.
  5. To escape to local shell, press 'Ctrl+Alt+]'.
  6.  
  7. WARNING! The remote SSH server rejected X11 forwarding request.
  8. Last login: Fri Apr 22 17:33:13 2022
  9. [root@web-7 ~]#

使用xshell等工具

2、踢掉用户下线pkill

  1. who命令
  2. w命令
  3. 查看当前机器登录用户信息

踢掉用户下线的命令,根据终端名干掉

  1. [root@web-7 ~]#pkill -kill -t pts/0

或者直接干掉进程

  1. [root@web-7 ~]#ps -ef|grep ssh
  2. root 1601 1 0 17:24 ? 00:00:00 /usr/sbin/sshd -D
  3. root 2026 1601 0 17:49 ? 00:00:00 sshd: root@pts/1
  4. root 2084 1601 0 17:50 ? 00:00:00 sshd: root@pts/0
  5. root 2105 1601 1 17:50 ? 00:00:00 sshd: root@pts/2
  6. root 2127 2028 0 17:50 pts/1 00:00:00 grep --color=auto ssh
  7. [root@web-7 ~]#kill 2105

免密登录(重点)

经过一段时间后,开发人员和运维人员都觉得使用密码SSH登录的方式太麻烦(每次登录都需要输入密码,难记又容易泄露密码)。

为了安全和便利性方面考虑,要求运维人员给所有服务器实现免密码登录。

基于公私钥的认证(免密码登录)

基于密钥对认证,也就是所谓的免密码登录,理解免密登录原理:

  1. 1.机器A 想免密码登录 机器B
  2. 2.机器A得发送自己的公钥给机器B
  1. 1.master-61机器生成一对公私钥
  2. 2.master-61机器发送自己的公钥,ssh-copy-id命令发给 web-7,此时需要输入web-7的账号密码,输入正确密码后。
  3. 3.web-7机器将master-61的公钥写入本地的~/.ssh/authorized_keys 已信任的公钥文件中
  4. 4.下一次master-61再次ssh登录web-7web-7去本地的~/.ssh/authorized_keys文件里搜索master-61的公钥,如果找到了,生成随机字符串
  5. 5.web-7将生成的随机字符串结合master-61的公钥加密处理,返回给master-61
  6. 6.master-61拿到该加密后的随机字符串,使用自己的私钥解密,解密成功后将原始随机字符串发给web-7
  7. 7.web-7比对该随机字符串,确认正确,允许登录。

基于公私钥认证实践(重要)

原理很复杂、但是操作很简单,其实就几条命令,生成了几个配置文件;

但是于超老师给你讲清楚原理,了解其背后的通信过程,无论是排错,还是ssh出现安全问题,回头思考这个流程,就能摸索出解决方案。

windows免密登录linux

公钥文件会记录主机名

  1. 1. 生成公私钥,客户端的
  2. 客户端的~/.ssh 这个目录,就存放了客户端机器的公私钥文件

  3. yu@DESKTOP-1TDLFH9 MINGW64 ~/Desktop
  4. $ ssh-keygen
  5. Generating public/private rsa key pair.
  6. Enter file in which to save the key (/c/Users/yu/.ssh/id_rsa):
  7. Enter passphrase (empty for no passphrase):
  8. Enter same passphrase again:
  9. Your identification has been saved in /c/Users/yu/.ssh/id_rsa
  10. Your public key has been saved in /c/Users/yu/.ssh/id_rsa.pub
  11. The key fingerprint is:
  12. SHA256:Bsp4uy8IchkJAUuxA4dspOxcckzdTyBR2qWAZ3BmT/g yu@DESKTOP-1TDLFH9
  13. The key's randomart image is:
  14. +---[RSA 3072]----+
  15. |B*oo+B=+.. |
  16. |B=+.+=B.o. |
  17. |+* =o.o+o |
  18. |o Bo . E . |
  19. | o.o+ S |
  20. |o o. . . |
  21. |.o .. |
  22. | . .. |
  23. | .o. |
  24. +----[SHA256]-----+

  25. yu@DESKTOP-1TDLFH9 MINGW64 ~/Desktop
  26. $ ls ~/.ssh
  27. id_rsa id_rsa.pub


  28. 2.发给服务端
  29. 客户端的公私钥对以及有了,把客户端的公钥,发给服务端(~/.ssh/)
  30. [root@m-61 ~]#ls ~/.ssh
  31. known_hosts

  32. 通过命令,吧客户端的公钥,写入到服务端的authorized_keys文件中

  33. $ ssh-copy-id root@10.0.0.61


  34. 3.检查服务端的 信任主机公钥文件
  35. 这里存放了 客户端的公钥字符串
  36. [root@m-61 ~]#cat ~/.ssh/authorized_keys


  37. 4.此时已经可以免密登录了,只能通过git-bash这个工具去免密登录,因为记录该主机名

  38. ssh root@10.0.0.61


linux免密登录linux

  1. master-61 免密登录 web-7

  2. 1.61机器生成公私钥对儿
  3. ls ~/.ssh/
  4. [root@m-61 ~]#ssh-keygen
  5. Generating public/private rsa key pair.
  6. Enter file in which to save the key (/root/.ssh/id_rsa):
  7. Enter passphrase (empty for no passphrase):
  8. Enter same passphrase again:
  9. Your identification has been saved in /root/.ssh/id_rsa.
  10. Your public key has been saved in /root/.ssh/id_rsa.pub.
  11. The key fingerprint is:
  12. SHA256:hkQRbkCBSXpR1QCXvgIEYfDOmk0Yka6UsYsH1B6MjLc root@m-61
  13. The key's randomart image is:
  14. +---[RSA 2048]----+
  15. |O**=*+B* |
  16. |+O== =. . |
  17. |=oB...+ |
  18. |.@E. o.. |
  19. |=.=. ..S |
  20. |o*. . .. |
  21. |o.. . |
  22. | |
  23. | |
  24. +----[SHA256]-----+


  25. 2.检查公私钥

  26. [root@m-61 ~]#ll ~/.ssh/
  27. total 16
  28. -rw------- 1 root root 572 Apr 27 15:19 authorized_keys
  29. -rw------- 1 root root 1679 Apr 27 15:26 id_rsa
  30. -rw-r--r-- 1 root root 391 Apr 27 15:26 id_rsa.pub
  31. -rw-r--r-- 1 root root 341 Apr 27 14:45 known_hosts


  32. 3.发送master-61的公钥,给web-7
  33. 为了免密登录
  34. ssh-copy-id root@10.0.0.7


  35. 提问,web-7是如何允许master-61登录自己的?
  36. root /etc/passwd
  37. 123123 /etc/shadow


  38. 换了形式验证master-61是否被允许登录
  39. 前提一定你通过某办法,吧master-61的公钥,写入到web-7机器的~/.ssh/authorized_keys




  40. web-7 会去自己的 ~/.ssh/authorized_keys 是否有master-61的公钥



  41. 比对,web-7上记录的公钥,以及比对master-61本地的公钥
  42. [root@web-7 ~]#cat ~/.ssh/authorized_keys
  43. ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDhShiDhxEZbVaGzIo7rw3KM0tr6nU8eawVHWjwgpkk8RQ56QVaHt5030lDQ7qA9W+C4btDc1A34WLkfCsz2J8+QEKAvZYBSxzK++8H+bBDpcBPWRE0mMwtCAdBv/0uSrg5QLVHMwro8ezrctFpbV6A+BN383AxaOkz3ccG/578dB7DK1n/WrHIR7LwJSp3lv2PpeTM72vKAgvS1RM9O36cA7kCSz4KxbbpUfAGlQk45iJiod1lXk2a+b3xxdMRee5nVRAkmZmP+HLHqUzqQIwcrahRRcDiTBEIt1SPDT6/y02zKJYG7ZWotozpeDEVvC/Bg5N0mMTMKztCQeNBn5Pp root@m-61


  44. master-61机器检查本地生成的公钥
  45. [root@m-61 ~]#cat ~/.ssh/id_rsa.pub
  46. ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDhShiDhxEZbVaGzIo7rw3KM0tr6nU8eawVHWjwgpkk8RQ56QVaHt5030lDQ7qA9W+C4btDc1A34WLkfCsz2J8+QEKAvZYBSxzK++8H+bBDpcBPWRE0mMwtCAdBv/0uSrg5QLVHMwro8ezrctFpbV6A+BN383AxaOkz3ccG/578dB7DK1n/WrHIR7LwJSp3lv2PpeTM72vKAgvS1RM9O36cA7kCSz4KxbbpUfAGlQk45iJiod1lXk2a+b3xxdMRee5nVRAkmZmP+HLHqUzqQIwcrahRRcDiTBEIt1SPDT6/y02zKJYG7ZWotozpeDEVvC/Bg5N0mMTMKztCQeNBn5Pp root@m-61


  47. 此时可以免密登录了
  48. ssh root@10.0.0.7

  1.  

免密登录步骤

  1. 1.创建秘钥对,全部回车,默认即可
  2. [root@master-61 ~]#ssh-keygen
  3. Generating public/private rsa key pair.
  4. Enter file in which to save the key (/root/.ssh/id_rsa):
  5. Created directory '/root/.ssh'.
  6. Enter passphrase (empty for no passphrase):
  7. Enter same passphrase again:
  8. Your identification has been saved in /root/.ssh/id_rsa.
  9. Your public key has been saved in /root/.ssh/id_rsa.pub.
  10. The key fingerprint is:
  11. SHA256:ENZzEVp+qIjG+Cb/MBko8anhY8JGrbqLhR8+6ZI9B2o root@master-61
  12. The key's randomart image is:
  13. +---[RSA 2048]----+
  14. | o. +o |
  15. | . .o+.. |
  16. |. . .oo . |
  17. | o.= . o . . |
  18. |o.=.= . S |
  19. |+=oo o |
  20. |+@+o* |
  21. |XE*=.o |
  22. |*=++... |
  23. +----[SHA256]-----+
  24.  
  25. 2.查看生成的公私钥
  26. [root@master-61 ~]#ls -l ~/.ssh/
  27. total 8
  28. -rw------- 1 root root 1679 Apr 22 19:43 id_rsa
  29. -rw-r--r-- 1 root root 396 Apr 22 19:43 id_rsa.pub
  30.  
  31. 3.发送公钥给目标机器
  32. [root@master-61 ~]#ssh-copy-id web-7
  33. /usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub"
  34. The authenticity of host 'web-7 (10.0.0.7)' can't be established.
  35. ECDSA key fingerprint is SHA256:Csqwr63+SZRFFOug/IGoFTgRe8hDSI/QalSMBcC6IaU.
  36. ECDSA key fingerprint is MD5:4c:9a:37:e2:5b:b5:de:a8:bf:90:b5:28:d8:5b:ac:60.
  37. Are you sure you want to continue connecting (yes/no)? yes
  38. /usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
  39. /usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
  40. root@web-7's password:
  41.  
  42. Number of key(s) added: 1
  43.  
  44. Now try logging into the machine, with: "ssh 'web-7'"
  45. and check to make sure that only the key(s) you wanted were added.
  46.  
  47. 4.测试是否可以免密登录
  48. [root@master-61 ~]#ssh root@web-7
  49. Last login: Fri Apr 22 17:50:42 2022 from 10.0.0.1
  50. [root@web-7 ~]#

检查web-7上的authorized_keys

  1. [root@web-7 ~]#cat ~/.ssh/authorized_keys
  2. ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDRsvpXAYBkQ/q3X9Rs7s+W5ppBaHj4zqtLk6Dvk0yvpFYIJvgvK27Q0hZWE5lXgiSpeYY3wXsg0SLI0/DAEU+mi2mrSUaCMDyia9A0vtpKsu574QDl2eOgU46sBrKfUw1vxC5Ow5awCzHu6RCdvo6mqVLDfqBG4e+pUEvYP4XVL4LMPqK0Wp5OZNprtIXzu57xE+wNUcbwC+hWc/2VSyBAtu9VXtVebrUk9t8hVAhKc2e7m8feexd+/WK5a4/FTj7oQb6P7GK+7gVXY6Thgwv54uIR9gSDU1U5aqEI9ng0xPUyI5KDMWjn2O2mfPY2tMF9ZsAgXJ/S7daMefRzdFvp root@master-61
  1. 检验master-61的公私钥文件
  1. 公钥
  2. [root@master-61 ~]#cat ~/.ssh/id_rsa.pub
  3. ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDRsvpXAYBkQ/q3X9Rs7s+W5ppBaHj4zqtLk6Dvk0yvpFYIJvgvK27Q0hZWE5lXgiSpeYY3wXsg0SLI0/DAEU+mi2mrSUaCMDyia9A0vtpKsu574QDl2eOgU46sBrKfUw1vxC5Ow5awCzHu6RCdvo6mqVLDfqBG4e+pUEvYP4XVL4LMPqK0Wp5OZNprtIXzu57xE+wNUcbwC+hWc/2VSyBAtu9VXtVebrUk9t8hVAhKc2e7m8feexd+/WK5a4/FTj7oQb6P7GK+7gVXY6Thgwv54uIR9gSDU1U5aqEI9ng0xPUyI5KDMWjn2O2mfPY2tMF9ZsAgXJ/S7daMefRzdFvp root@master-61
  4.  
  5. 私钥文件
  6. [root@master-61 ~]#ls -l ~/.ssh/id_rsa
  7. -rw------- 1 root root 1679 Apr 22 19:43 /root/.ssh/id_rsa
  8.  
  9. 已连接过的主机指纹
  10. [root@master-61 ~]#cat ~/.ssh/known_hosts
  11. web-7,10.0.0.7 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBL/Sx3bAaNcKqo7pC4FTYk3gyZ6hd1D/DKUWVfOd4gZb/8XwlAxWauceHe/BAsW5Z8pEmG6AjSyHM8ckOs94c7Y=

配置文件总结

在整个免密登录过程中,涉及的配置文件

  1. 客户端,需要生成公私钥,检查如下目录
  2. [root@master-61 ~]#ls ~/.ssh/
  3. id_rsa id_rsa.pub known_hosts
  4.  
  5. 服务端,记录客户端的公钥
  6. [root@web-7 ~]#ls ~/.ssh/
  7. authorized_keys id_rsa id_rsa.pub known_hosts
  8.  
  9. 其实整个过程就
  10.  
  11. 1个目录 ~/.ssh/
  12. 四个配置文件
  13. authorized_keys id_rsa id_rsa.pub known_hosts

SSH远程执行命令

  1. ssh不仅可以用来连接服务器、也可以远程执行命令
  2.  
  3. ssh远程执行命令不会登录到服务器,只会远程的执行命令,返回执行结果就结束了

查看远程机器的信息

查看主机名

  1. [root@master-61 ~]#ssh root@10.0.0.7 hostname
  2. web-7

查看内存

  1. [root@master-61 ~]#ssh root@10.0.0.7 free -m
  2. total used free shared buff/cache available
  3. Mem: 1982 91 1654 9 235 1720
  4. Swap: 0 0 0

远程创建文件

  1. [root@master-61 ~]#ssh root@10.0.0.7 touch /opt/新年快乐.log
  2. [root@master-61 ~]#
  3.  
  4. [root@master-61 ~]#ssh root@10.0.0.7 ls /opt -l
  5. total 0
  6. -rw-r--r-- 1 root root 0 Apr 22 20:16 新年快乐.log

远程安装软件redis

  1. [root@master-61 ~]#ssh root@10.0.0.7 yum install redis -y

远程查看服务状态

  1. [root@master-61 ~]#ssh root@10.0.0.7 systemctl status redis
  2. redis.service - Redis persistent key-value database
  3. Loaded: loaded (/usr/lib/systemd/system/redis.service; disabled; vendor preset: disabled)
  4. Drop-In: /etc/systemd/system/redis.service.d
  5. └─limit.conf
  6. Active: inactive (dead)

ssh安全防御

安全因素

  1. 1.ssh支持密码连接、秘钥连接两个方式,为了密码别泄露,你得关闭密码登录
  2. 2.默认端口号全世界都知道是22,你得改掉
  3. 3.如果客户端私钥被窃取,root服务器也就危险了

ssh优化

禁止密码登录,只允许公钥登录

  1. [root@web-7 ~]#grep -Ei '^(pubkey|password)' /etc/ssh/sshd_config
  2. PubkeyAuthentication yes
  3. PasswordAuthentication no

修改默认22端口

  1. Port 22422

限制主机登录条件、设定iptables规则,只允许跳板机的流量登录,其他机器的流量全部禁止。

  1. 1.安装防火墙
  2. yum install iptables-services -y
  3.  
  4. 2.开启内核防火墙功能,载入防火墙功能
  5. [root@web-7 ~]#modprobe ip_tables
  6. [root@web-7 ~]#modprobe iptable_filter
  7. [root@web-7 ~]#modprobe iptable_nat
  8. [root@web-7 ~]#modprobe ip_conntrack
  9. [root@web-7 ~]#modprobe ip_conntrack_ftp
  10. [root@web-7 ~]#modprobe ip_nat_ftp
  11. [root@web-7 ~]#modprobe ipt_state
  12.  
  13. 3.禁用firwalld服务、单独开启iptables服务
  14. [root@web-7 ~]#systemctl stop firewalld
  15. [root@web-7 ~]#systemctl disable firewalld
  16.  
  17. [root@web-7 ~]#systemctl start iptables
  18.  
  19. 4.清空默认规则,单独设定一条规则
  20. [root@web-7 ~]#iptables -F
  21. [root@web-7 ~]#
  22. [root@web-7 ~]#iptables -X
  23. [root@web-7 ~]#iptables -Z
  24. [root@web-7 ~]#iptables -A INPUT ! -s 172.16.1.61 -p tcp --dport 22422 -j DROP
  25.  
  26. 5.查看防火墙规则
  27. [root@web-7 ~]#iptables -L
  28. Chain INPUT (policy ACCEPT)
  29. target prot opt source destination
  30. DROP tcp -- !172.16.1.61 anywhere tcp dpt:22422
  31.  
  32. Chain FORWARD (policy ACCEPT)
  33. target prot opt source destination
  34.  
  35. Chain OUTPUT (policy ACCEPT)
  36. target prot opt source destination

登录测试,此时只有master-61机器可以登录

  1. [root@master-61 ~]#ssh -p 22422 root@172.16.1.7
  2. Last login: Sat Apr 23 17:54:21 2022 from 172.16.1.61
  3. [root@web-7 ~]#

其他机器,流量根本是过不去的

  1. [root@nfs-31 ~]#ssh -p 22422 root@172.16.1.7
  2.  
  3. 卡死,无法登录

扩展总结(ssh加密算法)

图解SSH加密算法

对称加密算法

  • des 对称的公钥加密算法,安全低,数据传输速度快;使用同一个秘钥进行加密或解密

非对称加密算法(ssh连接就是非对称加密)

rsa 非对称的公钥加密算法,安全,数据传输速度慢 ,SSH默认的加密算法

上面的数据是加密了,这个钥匙,如果丢了怎么办?被别人恶意获取到不还是危险吗?

中间人攻击(了解)

【Client如何保证自己接收到的公钥就是来源于目标Server机器的?】

上图看似理所当然,然而此时一位不愿意透露姓名的黑客路过,并且做了如下事情

  1. 拦截客户端的登录请求
  2. 向客户端发送黑客自己的公钥,这时客户端可能并不知道,并且用了此公钥对数据进行了加密
  3. 客户端发送假的公钥,加密后的数据,黑客拿到了此加密后的数据,再用自己的私钥进行解密
  4. 客户端的数据此时已被黑客截取

ssh通过指纹确认解决该文件

回顾上述于超老师讲解的ssh首次连接,用户进行服务器的指纹确认,再和服务器的公钥对比即可。

SSH批量分发密钥

目前ssh免密登录的问题

  1. 每一台首次进行免密连接的机器,都需要如下操作
  2.  
  3. 1.手动生成秘钥对
  4. 2.服务端首次连接的指纹确认需要输入yes、正确的密码
  5. 3.修改sshd的配置文件,修改端口,监听ip,秘钥方式,禁止密码登录等;
  6. 4.重启sshd服务
  7. 5.测试是否可以免密登录

这些步骤,机器少还可以,如果机器数量较多,那工作量就很大,人为难以维护;

并且全部流程手动维护,难免敲错,遗漏步骤等,也难以进行最后的验证,因此必须实现脚本自动化;

任务需求

  1. 1.新创建好一个机器,在master-61机器上执行一次脚本,上述免密登录操作自动完成,无须人工介入。

记录免密登录步骤

  1. 交互记录:
  2.  
  3. 1.生成公私钥
  4. ssh-keygen
  5.  
  6. 2.连接确认,输入yes
  7. ssh-copy-id 10.0.0.31
  8.  
  9. 3.输入密码
  10. ssh-copy-id 10.0.0.31

解决需要人为交互的部分

解决公钥分发的交互

1.第一次指纹确认,如何解决这个yes or no的输入?

  1. [root@master-61 ~]#ssh-copy-id root@172.16.1.31
  2. /usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub"
  3. The authenticity of host '172.16.1.31 (172.16.1.31)' can't be established.
  4. ECDSA key fingerprint is SHA256:Csqwr63+SZRFFOug/IGoFTgRe8hDSI/QalSMBcC6IaU.
  5. ECDSA key fingerprint is MD5:4c:9a:37:e2:5b:b5:de:a8:bf:90:b5:28:d8:5b:ac:60.
  6. Are you sure you want to continue connecting (yes/no)?
  7.  
  8. 解决办法,添加参数,不检查指纹
  9. ssh-copy-id 172.16.1.31 -o StrictHostKeyChecking=no

2.第二次需要人为操作,输入首次登录的密码,可以通过sshpass命令传入密码

  1. yum install sshpass -y
  2.  
  3. sshpass -p '123123' ssh-copy-id 172.16.1.31 -o StrictHostKeyChecking=no

解决公私钥创建的交互

3.生成密钥对的环节,也就是指定公私钥存储到哪里

  1. 指定key输出位置
  2. ssh-keygen -f /root/.ssh/id_rsa.pub

4.跳过输入密码,直接-N指定空密码即可

  1. ssh-keygen -f /root/.ssh/id_rsa.pub -N ''

脚本原型

注意先安装好sshpass命令

  1. yum install sshpass -y

login_key.sh

  1. #!/bin/bash
  2.  
  3. #1.跳过输入公私钥创建的密码
  4. echo "正在创建公私钥..."
  5. if [ -f /root/.ssh/id_rsa ]
  6. then
  7. echo "密钥对已经存在"
  8. else
  9. ssh-keygen -f /root/.ssh/id_rsa -N '' > /tmp/create_ssh.log 2>&1
  10. fi
  11.  
  12. #2.自动输入目标机器密码
  13. echo "正在分发公钥中..."
  14. for ip in {7,8,9,31}
  15. do
  16. sshpass -p '123123' ssh-copy-id 172.16.1.${ip} -o StrictHostKeyChecking=no > /tmp/create_ssh.log 2>&1
  17. echo "正在验证免密登录结果中...."
  18. echo "远程获取到主机名: $(ssh 172.16.1.${ip} hostname)"
  19. done

此时可以手动验证免密登录

  1. [root@master-61 ~]#ssh root@172.16.1.31
  2. Last login: Fri Apr 22 20:28:56 2022 from 10.0.0.1
  3. [root@nfs-31 ~]#

ssh进阶的更多相关文章

  1. 【SSH进阶之路】Hibernate映射——多对一单向关联映射(四)

    [SSH进阶之路]Hibernate基本原理(一) ,小编介绍了Hibernate的基本原理以及它的核心,採用对象化的思维操作关系型数据库. [SSH进阶之路]Hibernate搭建开发环境+简单实例 ...

  2. 【SSH进阶之路】一步步重构容器实现Spring框架——彻底封装,实现简单灵活的Spring框架(十一)

    文件夹      [SSH进阶之路]一步步重构容器实现Spring框架--从一个简单的容器開始(八)      [SSH进阶之路]一步步重构容器实现Spring框架--解决容器对组件的"侵入 ...

  3. 【SSH进阶之路】Hibernate映射——一对一双向关联映射(六)

    上篇博文[SSH进阶之路]Hibernate映射--一对一单向关联映射(五),我们介绍了一对一的单向关联映射,单向是指仅仅能从人(Person)这端载入身份证端(IdCard),可是反过来.不能从身份 ...

  4. 【SSH进阶之路】Struts + Spring + Hibernate 进阶开端(一)

    [SSH进阶之路]Struts + Spring + Hibernate 进阶开端(一) 标签: hibernatespringstrutsssh开源框架 2014-08-29 07:56 9229人 ...

  5. 【SSH进阶之路】Hibernate基本映射(三)

    [SSH进阶之路]Hibernate基本原理(一) ,小编介绍了Hibernate的基本原理以及它的核心.採用对象化的思维操作关系型数据库. [SSH进阶之路]Hibernate搭建开发环境+简单实例 ...

  6. SSH进阶之路

    [SSH进阶之路]Hibernate基本原理(一)       在开始学Hibernate之前,一直就有人说:Hibernate并不难,无非是对JDBC进一步封装.一句不难,难道是真的不难还是眼高手低 ...

  7. 【SSH进阶之路】Hibernate映射——一对一单向关联映射(五)

    [SSH进阶之路]Hibernate基本原理(一) ,小编介绍了Hibernate的基本原理以及它的核心,採用对象化的思维操作关系型数据库. [SSH进阶之路]Hibernate搭建开发环境+简单实例 ...

  8. 【SSH进阶之路】Hibernate搭建开发环境+简单实例(二)

    Hibernate是很典型的持久层框架,持久化的思想是很值得我们学习和研究的.这篇博文,我们主要以实例的形式学习Hibernate,不深究Hibernate的思想和原理,否则,一味追求,苦学思想和原理 ...

  9. 【SSH进阶之路】Hibernate系列——总结篇(九)

    这篇博文是Hibernate系列的最后一篇,既然是最后一篇,我们就应该进行一下从头到尾,整体上的总结,将这个系列的内容融会贯通. 概念 Hibernate是一个对象关系映射框架,当然从分层的角度看,我 ...

  10. 【SSH进阶之路】Hibernate映射——多对多关联映射(八)

    上篇博文[SSH进阶之路]Hibernate映射——一对多关联映射(七),我们介绍了一对多关联映射,它是多对多关联映射的基础. 多对多映射是现实生活中最常见的映射,也是最容易理解的映射.废话少说,直接 ...

随机推荐

  1. MAE 自监督算法介绍和基于 EasyCV 的复现

    ​简介:自监督学习(Self-Supervised Learning)能利用大量无标注的数据进行表征学习,然后在特定下游任务上对参数进行微调.通过这样的方式,能够在较少有标注数据上取得优于有监督学习方 ...

  2. 基于 PTS 压测轻松玩转问题诊断

    ​简介:性能测试 PTS(Performance Testing Service)是具备强大的分布式压测能力的 SaaS 压测平台,可模拟海量用户的真实业务场景,全方位验证业务站点的性能.容量和稳定性 ...

  3. Vite + React 组件开发实践

    简介: 毫不夸张的说,Vite 给前端带来的绝对是一次革命性的变化.或者也可以说是 Vite 背后整合的 esbuild . Browser es modules.HMR.Pre-Bundling 等 ...

  4. [PHP] 浅谈 Laravel 三大验证方式的区别, auth:api, passport, auth:airlock

    auth:api 最先出来,提供了最简单和最实用的方式进行 api 身份校验. 关于它的含义和用法你可以参考以下两篇: 浅谈 Laravel Authentication 的 auth:api 浅谈 ...

  5. 2018-11-19-win10-uwp-使用-Azure-DevOps-自动构建

    title author date CreateTime categories win10 uwp 使用 Azure DevOps 自动构建 lindexi 2018-11-19 15:26:4 +0 ...

  6. 构建RAG应用-day05: 如何评估 LLM 应用 评估并优化生成部分 评估并优化检索部分

    评估 LLM 应用 1.一般评估思路 首先,你会在一到三个样本的小样本中调整 Prompt ,尝试使其在这些样本上起效. 随后,当你对系统进行进一步测试时,可能会遇到一些棘手的例子,这些例子无法通过 ...

  7. 电路笔记03—kcl、kvl,独立源,受控源

    电路笔记03-kcl.kvl,独立源,受控源 听起来简单,做起来需要思考.所以做作业,思考很有 必要.电路的功率守恒,4种受控源,用两类约束列方程.电路分析力最难的一部分,怎么把一个量用其它量表示,后 ...

  8. DB2查找最耗时SQL

    两种方法:db2top和snapshot for dynamic sql 1. db2top -d <dbname>

  9. Git——分支管理(2)

    Git--分支管理(2) 提示:图床在国外且动图比较多的情况下,需要时间加载. 目录: 目录 Git--分支管理(2) 提示:图床在国外且动图比较多的情况下,需要时间加载. 目录: Git基础 Git ...

  10. Vben-admin---ApiSelect Invalid prop: type check failed for prop "onUpdate:value". Expected Function, got Array

    在basicFrom组件里添加一个ApiSelect, <template #localSearch="{ model, field }"> <ApiSelect ...