-
2022-03-18 18:11:19
ssh协议和tcp/ip 协议一样非常的重要,那么,如何使用这个ssh呢?这个协议到底有什么用处呢?
一,
ssh协议是什么
ssh是secure SHell的简写,意思为安全的shell,中文也叫安全的外壳协议(是不是比较喜感的一个名称?),那,既然都是shell了,自然是有shell的那些特征啦。
SSH 主要由三部分组成:
传输层协议 [SSH-TRANS]
提供了服务器认证,保密性及完整性。此外它有时还提供压缩功能。 SSH-TRANS 通常运行在TCP/IP连接上,也可能用于其它可靠数据流上。 SSH-TRANS 提供了强力的加密技术、密码主机认证及完整性保护。该协议中的认证基于主机,并且该协议不执行用户认证。更高层的用户认证协议可以设计为在此协议之上。
用户认证协议 [SSH-USERAUTH]
用于向服务器提供客户端用户鉴别功能。它运行在传输层协议 SSH-TRANS 上面。当SSH-USERAUTH 开始后,它从低层协议那里接收会话标识符(从第一次密钥交换中的交换哈希H )。会话标识符唯一标识此会话并且适用于标记以证明私钥的所有权。 SSH-USERAUTH 也需要知道低层协议是否提供保密性保护。
连接协议 [SSH-CONNECT]
将多个加密隧道分成逻辑通道。它运行在用户认证协议上。它提供了交互式登录话路、远程命令执行、转发 TCP/IP 连接和转发 X11 连接。
ssh的最主要的作用就是可以远程登陆服务器,使得距离不能成为我们的物理限制。
二,
ssh的实际应用
ssh在很多运维工具中都使用到了,比如,常用的xshell,secure CRT, 这些运维工具都是通过ssh协议来远程登陆服务器的哦。
ssh还有跳转登陆服务器的功能,在集群的内部经常会使用ssh登陆其它的服务器。
ssh还可以应用在脚本内,使得管理大批量的服务器并完成一些简单的自动化工作成为可能。但,ssh通常是点对点的登陆,因此,Apache开发出了基于Python的ansible 以及其它组织开发的saltstrack等等大批量自动化运维工具。
三,
ssh免密登陆的配置
(1) 通常的带密码验证的ssh登陆
端口问题:
这里需要提醒各位,ssh默认的端口是22,但,默认的端口并不是非常安全的,因此,在实际的生产活动中通常是会更改sshd服务的端口,也就是默认端口更改为自定义的端口了。
通常我们要ssh远程登陆一个服务器,命令是这样的:
ssh 192.168.0.16 执行命令后,会要求输入192.168.0.16服务器上的root用户的密码进行验证 如果输入正确,就登陆192.168.0.16这个服务器啦。
那么,上面的写法是省略了很多东西的,其实完整的ssh命令是如下的:
ssh -p 22 root@192.168.0.16 ssh -p 22 zsk@192.168.0.16 这个命令要说明的是,如果sshd服务是使用的默认端口,-p 22 可以省略 如果是想要远程登陆后,就是root用户,那么就在ip前加root@ 如果是想要远程登陆后,是普通用户,那么就在ip前加普通用户名@ 第二条命令就是需要验证普通用户zsk的密码啦。
当我们回车后,将会要求输入目标主机的用户和密码进行验证,比如上面这条命令是要求验证 192.168.0.16这个远程主机的root用户的密码,如果密码错误,将会要求重新输入,直到三次密码输入错误,关闭ssh连接。
(2)
sshd服务端口自定义更改
vim /etc/ssh/sshd_config 找到以下内容: # semanage port -a -t ssh_port_t -p tcp #PORTNUMBER # Port 2233 将port前的注释去掉,后面的数字写一个自己喜欢的65525以内的未被占用的数字即可。然后保存该文件。 重启sshd服务,重启命令为: systemctl restart sshd 命令执行完毕后,别的服务器要ssh这台服务器就必须是下面这个命令了: ssh -p 2233 192.168.0.16
(3)
前面都是一些基础的科普知识,现在开始免密配置啦。(假设,是两个服务器之间的免密,192.168.0.16和192.168.0.17,都是配置root用户的免密哦,sshd服务端口都已更改为2233啦)
- 在192.168.0.17执行ssh-keygen -t rsa ,然后一路回车
- 在192.168.0.17****执行 ssh-copy-id -p 2233 root@192.168.0.16 输入16的正确的root密码验证。这个是远程ssh免密
- 在192.168.0.17执行 ssh-copy-id -p 2233 root@192.168.0.17 输入本机17的正确的root密码进行验证。这个是本地ssh免密
- 在192.168.0.16服务器上重复上面的三步,只是密码验证的分别是本地密码和远程密码而已啦。
(4)
免密的原理揭示:
[root@master ~]# ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in which to save the key (/root/.ssh/id_rsa): /root/.ssh/id_rsa already exists. Overwrite (y/n)? y 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:DoLRfKE6PzfnFviMYbTGcfdjjCnOAVYDnIQjINzVB28 root@master The key's randomart image is: +---[RSA 2048]----+ |+.. .==+. | |...+o.oo+. | | ..+....E | | + .= o . | | + .+.*S. = | | o .Bo+ o = | | oooBo+ . . | | o.+* | | .. | +----[SHA256]-----+
以上需要注意,在提示输入密码的时候一定要回车,不要输入密码。也就是在提示Enter passphrase (empty for no passphrase)的时候回车,然后在下一个提示仍然回车,不要输入任何密码。
ssh-keygen 这个命令会在/root/.ssh/目录下生成两个文件,一个是公钥 id_rsa.pub 一个是私钥 id_rsa。
这里要说一个ssh的小秘密了,我们查看私钥,会发现即使我们在每个服务器生成的时候没有输入密码,也就是空密码,私钥的内容都是不一样的。当然,公钥的内容也是不一样的,因此,不用纠结啦,即使生成公私钥的时候是空密码,仍然是十分的安全啦。
ssh-copy-id 这个命令是将a服务器的公钥传递到b服务器内,这个我们查看免密配置后生成的authorized_keys就可以看到了。该文件的路径和公私钥是在一个目录下的哦。
[root@master ~]# cat ~/.ssh/authorized_keys ssh-rsa ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCvRg61Q+wReTj/8zAykY51SuTWI3Agptsq0KNtNjHlK/JyNvcTmyMQxLeEFldJEC35/psDsuv2/shFM38zn2BYm8XSVgQITnpuNXIqq5R6lMhLWIO9ehfkuuGKakk91n9szrlbkpCWJeLDPCc8qE8esmEX4xedpk913fOtXa6AuTzZV07XfMmWJXYtco9F12rybjA0hhdku/vMvVRfLnlI6/uPeC7dLI1KuG4UfTGaEAD+rkO/3Ti4W2f44YPB36h2LlnqvC/oprW9mNLNkRoMLDktWjEI+TXqUfNr4OjSaph12KuVLxWmG/Sd6WQjo57wW5Px4RIh47PV//p2e32T root@slave1 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC6AWczH2EgetzltgPaqtU5lDVR/vPrKPlOSmiAx1gi14r0QviZ/fFrt1RDx7x7ptbPBpJqPLbLck2PBIEc8s56fVUsLNCo26Qny+0/WsmFcRfx5sC09teRLuK74kHX3XrbD8TxCndGVWWhgQk8ACIOHswr47FrZFK6l0wPQFOlVSnqmZJ2z7wdhOIZVDb0dyOkdISqNaN4Q9C/9sqdbOwGnD8ryLaXSUmLYf1epiBJ2/0cheua3DXBQW4WoR2pDUXJoBWGTTUPPd+UHIvdRRmp0nqmc9VJqDQ5OkQs2R43ag67lwD62gPmNnh7hDb+bWOjGrr1xg2ui8Puz04C093f root@master
可以看到,两个服务器的公钥内容合并到这个文件内了。
(5)免密登陆的取消
这个就非常简单了,只是注意别删除错了就可以啦
???????rm -rf ~/.ssh/*
把前面 ssh-keygen 等等命令生成的文件删除就可以啦,非常的简单。
更多相关内容 -
SSH框架搭建源码
2015-10-19 21:46:09里面是SSH框架搭建登录的demo,清楚的描述了SSH框架搭建过程的各种配置,另附博客地址:http://blog.csdn.net/u010539352 -
SSH Secure Shell Client 3.2.9
2014-02-13 11:09:28SSH是一个用来替代TELNET、FTP以及R命令的工具包,主要是想解决口令在网上明文传输的问题。为了系统安全和用户自身的权益,推广SSH是必要的。SSH 为 Secure Shell 的缩写,由 IETF 的网络工作小组(Network Working ... -
SSH网上商城项目实战完整源码(带博文可参考)
2016-05-26 20:56:31该资源包含了完整的项目开发:前端代码,后端实现,完成了后台管理功能,前台显示功能,完成了购物车,完成了支付功能,完成了邮件的发送,短信的发送功能,完成了后台查看销售报表的功能等,比较齐全,是个学习的好... -
SSH2框架搭建实例源码
2013-04-25 09:53:29SSH2框架搭建实例(spring3.2+strust2.3.4+hibernate4.2)全部采用最新版本.演示了用户登录和用户管理 -
新SSH(Spring+SpringMVC+Hibernate)框架结构的java web案例实践
2017-04-27 17:56:50随着struts的安全问题的暴露,原由Struts2+spring+hibernate构成的SSH2已经被越来越多的开发者所弃用,反而,由Spring+SpringMVC+Hibernate构成的SSH框架越来越受欢迎!这里提供了一个案例代码,希望对大家搭建环境... -
SSH三大框架经典入门教程【PDF清晰版】
2013-03-02 09:17:14本教程共有4章,以非常通俗易懂的方式,向我们介绍Struts、Spring、Hibernate三大现在比较流行的JAVA_WEB开发框架,非常适合刚刚接触的朋友快速入门。 chap01 领略清晰的MVC流程----...chap04 SSH互整合技术资料.pdf -
Ubuntu14.04离线安装ssh所需安装包deb
2015-07-29 12:04:101.按以下顺序执行安装 sudo dpkg -i openssh-client_6.6p1-2ubuntu1_amd64.deb sudo dpkg -i openssh-sftp-server_6.6p1-2ubuntu1_amd64.deb sudo dpkg -i libck-...若未启动,尝试以下命令:/etc/init.d/ssh start -
SSH是什么
2022-02-25 14:11:261 什么是 ssh?有什么用? (1)ssh 是一种协议 SSH(Secure Shell) 是较可靠,专为远程登录会话和其他网络服务提供安全性的协议,利用 SSH 协议可以有效防止远程管理过程中的信息泄露问题。 (2)ssh 服务 ...1 什么是 ssh?有什么用?
(1)ssh 是一种协议
SSH(Secure Shell) 是较可靠,专为远程登录会话和其他网络服务提供安全性的协议,利用 SSH 协议可以有效防止远程管理过程中的信息泄露问题。
(2)ssh 服务
Linux 一般作为服务器使用,我们通常使用 ssh 服务(指实现 SSH 协议的软件)远程登录到 Linux 服务器来管理维护系统。
-
OpenSSH 是 SSH (Secure SHell) 协议的免费开源实现。
-
OpenSSH 的服务端:sshd(Linux 服务器启动该服务)
-
OpenSSH 的客户端:ssh(客户端启动,通过它来访问服务端)
2 ssh 基于密匙的安全验证过程是怎样的?
需要创建一对密匙,把公用密匙放在服务器上。连接SSH服务器时,客户端向服务器发出请求,用你的放的公钥匙进行安全验证,服务器收到请求之后,先在该服务器上你的主目录下寻找你的公匙,然后把它和你发送过来的公用密匙进行比较。如果两个密匙一致,服务器就用公用密匙加密“质询”(challenge)并把它发送给客户端软件。客户端软件收到“质询”之后就可以用你的私匙解密。
3 对称加密与非对称加密区别是什么?
(1)对称加密
加密(encryption)与解密(decryption)用的是同样的密钥(secret key)。效率高,对称加密的一大缺点是密钥的管理与分配,在发送密钥的过程中,密钥有很大的风险会被黑客们拦截。现实中通常的做法是将对称加密的密钥进行非对称加密,然后传送给需要它的人。
(2)非对称加密
非对称加密为数据的加密与解密提供了一个非常安全的方法,它使用了一对密钥,公钥(public key)和私钥(private key)。私钥只能由一方安全保管,不能外泄,而公钥则可以发给任何请求它的人。非对称加密使用这对密钥中的一个进行加密,而解密则需要另一个密钥。目前最常用的非对称加密算法是RSA 算法。虽然非对称加密很安全,但是和对称加密比起来,它非常的慢,所以我们还是要用对称加密来传送消息,但对称加密所使用的密钥我们可以通过非对称加密的方式发送出去。
4 非对称加密 RSA 算法的作用
(1)加密:公钥加密私钥解密
主要用于将数据资料加密不被其他人非法获取,保证数据安全性。使用公钥将数据资料加密,只有私钥可以解密。即使密文在网络上被第三方获取由于没有私钥则无法解密,从而保证数据安全性。
-
A 在自己电脑上生成 RSA 钥匙文件,一个私钥文件一个公钥文件,并将他的公钥传送给 B。
-
此时 B 要传送信息给 A,于是 B 用 A 的公钥加密他的消息,然后传送给A。(网络上传输的密文,没有 A 的私钥无法解密,其他人获取之后也没用)
-
A 用他的私钥解密 B 的消息。
(2)认证:私钥加密公钥解密
主要用于身份验证,判断某个身份的真实性。使用私钥加密之后,用对应的公钥解密从而验证身份真实性。
SSH 公钥登录则用的是第二种功能。5 如何生成 ssh 密钥对?
-
运行完上面的命令会生成一对公私钥,默认保存在 ~/.ssh/ 下的 id_rsa,id_rsa.pub。
-
id_rsa 是私钥,id_rsa.pub 是公钥,私钥一定要妥善保管。
-
id_rsa 的权限必须是 600 , chmod 600 ~/.ssh/id_rsa。600 即(-rw------)只有所有者才有读和写的权限。
6 ssh 配置 config 文件与快捷登陆
(1)快捷登陆配置
在 ~/.ssh/ 下可以自己定义一些快捷键登陆的配置,该配置在 ~/.ssh/config
config 结构如下:
Host kafka_broker_01 #定义主机别名 ServerAliveInterval 30 HostName 122.22.222.102 #主机ip Port 33033 #ssh 端口 User bila #用户名 IdentityFile /Users/bila/.ssh/id_rsa #私钥 ProxyCommand ssh w_x_bastion -C -W %h:%p #设置跳板机
(2) 登陆
指定用户登录
ssh bila@192.168.0.103
指定端口号登录
ssh ssh 192.168.0.103 -p 2022
7 附录
GitHub如何配置SSH
Key https://blog.csdn.net/u013778905/article/details/83501204
远程管理服务 SSH
https://www.jianshu.com/p/d3412c5ebdaa8 小结
啥是 SSH?SSH 的作用;对称加密、非对称加密的区别和作用;ssh 密钥对生成,以及 ssh 配置快捷登陆。
-
-
SSH配置文件 /etc/ssh/sshd_conf参数详细说明
2020-12-02 12:28:25一:SSH配置文件相关参数详细说明 1)SSH客户端配置文件 [root@controller ~]# vi /etc/ssh/sshd_config # $OpenBSD: sshd_config,v 1.93 2014/01/10 05:59:19 djm Exp $ # This is the sshd server system-wide ...一:SSH配置文件相关参数详细说明
1)SSH客户端配置文件
[root@controller ~]# vi /etc/ssh/sshd_config # $OpenBSD: sshd_config,v 1.93 2014/01/10 05:59:19 djm Exp $ # This is the sshd server system-wide configuration file. See # sshd_config(5) for more information. # This sshd was compiled with PATH=/usr/local/bin:/usr/bin # The strategy used for options in the default sshd_config shipped with # OpenSSH is to specify options with their default value where # possible, but leave them commented. Uncommented options override the # default value. # If you want to change the port on a SELinux system, you have to tell # SELinux about this change. # semanage port -a -t ssh_port_t -p tcp #PORTNUMBER # #Port 22 #AddressFamily any #ListenAddress 0.0.0.0 #ListenAddress :: # The default requires explicit activation of protocol 1 #Protocol 2 # HostKey for protocol version 1 #HostKey /etc/ssh/ssh_host_key # HostKeys for protocol version 2 HostKey /etc/ssh/ssh_host_rsa_key #HostKey /etc/ssh/ssh_host_dsa_key HostKey /etc/ssh/ssh_host_ecdsa_key HostKey /etc/ssh/ssh_host_ed25519_key # Lifetime and size of ephemeral version 1 server key #KeyRegenerationInterval 1h #ServerKeyBits 1024 # Ciphers and keying #RekeyLimit default none #ServerKeyBits 1024 # Ciphers and keying #RekeyLimit default none # Logging # obsoletes QuietMode and FascistLogging #SyslogFacility AUTH SyslogFacility AUTHPRIV #LogLevel INFO # Authentication: #LoginGraceTime 2m #PermitRootLogin yes #StrictModes yes #MaxAuthTries 6 #MaxSessions 10 #RSAAuthentication yes #PubkeyAuthentication yes # The default is to check both .ssh/authorized_keys and .ssh/authorized_keys2 # but this is overridden so installations will only check .ssh/authorized_keys AuthorizedKeysFile .ssh/authorized_keys #AuthorizedPrincipalsFile none #AuthorizedKeysCommand none #AuthorizedKeysCommandUser nobody # For this to work you will also need host keys in /etc/ssh/ssh_known_hosts #RhostsRSAAuthentication no # similar for protocol version 2 #HostbasedAuthentication no # Change to yes if you don't trust ~/.ssh/known_hosts for # RhostsRSAAuthentication and HostbasedAuthentication #IgnoreUserKnownHosts no # Don't read the user's ~/.rhosts and ~/.shosts files #IgnoreRhosts yes # To disable tunneled clear text passwords, change to no here! #PasswordAuthentication yes #PermitEmptyPasswords no PasswordAuthentication yes # Change to no to disable s/key passwords #ChallengeResponseAuthentication yes ChallengeResponseAuthentication no # Kerberos options #KerberosAuthentication no #KerberosOrLocalPasswd yes #KerberosTicketCleanup yes #KerberosGetAFSToken no #KerberosUseKuserok yes # GSSAPI options GSSAPIAuthentication no GSSAPICleanupCredentials no #GSSAPIStrictAcceptorCheck yes #GSSAPIKeyExchange no #GSSAPIEnablek5users no # Set this to 'yes' to enable PAM authentication, account processing, # and session processing. If this is enabled, PAM authentication will # be allowed through the ChallengeResponseAuthentication and # PasswordAuthentication. Depending on your PAM configuration, # PAM authentication via ChallengeResponseAuthentication may bypass # the setting of "PermitRootLogin without-password". # If you just want the PAM account and session checks to run without # PAM authentication, then enable this but set PasswordAuthentication # and ChallengeResponseAuthentication to 'no'. # WARNING: 'UsePAM no' is not supported in Red Hat Enterprise Linux and may cause several # problems. UsePAM yes #AllowAgentForwarding yes #AllowTcpForwarding yes #GatewayPorts no X11Forwarding yes #X11DisplayOffset 10 #X11UseLocalhost yes #PermitTTY yes #PrintMotd yes #PrintLastLog yes #TCPKeepAlive yes #UseLogin no UsePrivilegeSeparation sandbox # Default for new installations. #PermitUserEnvironment no #Compression delayed #ClientAliveInterval 0 #ClientAliveCountMax 3 #ShowPatchLevel no UseDNS no #PidFile /var/run/sshd.pid #MaxStartups 10:30:100 #PermitTunnel no #ChrootDirectory none #VersionAddendum none # no default banner path #Banner none # Accept locale-related environment variables AcceptEnv LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES AcceptEnv LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE LC_MEASUREMENT AcceptEnv LC_IDENTIFICATION LC_ALL LANGUAGE AcceptEnv XMODIFIERS # override default of no subsystems Subsystem sftp /usr/libexec/openssh/sftp-server # Example of overriding settings on a per-user basis #Match User anoncvs # X11Forwarding no # AllowTcpForwarding no # PermitTTY no # ForceCommand cvs server "/etc/ssh/sshd_config" 153L, 4358C
/etc/ssh/ssh——config #配置文件概要 Host * #选项“Host”只对能够匹配后面字串的计算机有效。“*”表示所有的计算机。 ForwardAgent no #设置连接是否经过验证代理(如果存在)转发给远程计算机。 ForwardX11 no #设置X11连接是否被自动重定向到安全的通道和显示集(DISPLAY set) RhostsAuthentication n #设置是否使用基于rhosts的安全验证。 RhostsRSAAuthentication no #设置是否使用用RSA算法的基于rhosts的安全验证。 RSAAuthentication yes #设置是否使用RSA算法进行安全验证。 PasswordAuthentication yes #设置是否使用口令验证。 FallBackToRsh no #设置如果用ssh连接出现错误是否自动使用rsh。 UseRsh no #设置是否在这台计算机上使用“rlogin/rsh”。 BatchMode no #如果设为“yes”,passphrase/password(交互式输入口令)的提示将被禁止。当不能交互式输入口令的时候,这个选项对脚本文件和批处理任务十分有用。 CheckHostIP yes #设置ssh是否查看连接到服务器的主机的IP地址以防止DNS欺骗。建议设置为“yes”。 StrictHostKeyChecking no #如果设置成“yes”,ssh就不会自动把计算机的密匙加入“$HOME/.ssh/known_hosts”文件,并且一旦计算机的密匙发生了变化,就拒绝连接。 IdentityFile ~/.ssh/identity #设置从哪个文件读取用户的RSA安全验证标识。 Port 22 #设置连接到远程主机的端口。 Cipher blowfish #设置加密用的密码。 EscapeChar ~ #设置escape字符。
2)SSH服务端配置文件详解
/etc/ssh/sshd_config #配置文件概要 Port 22 # SSH 预设使用 22 这个 port,最好是用别的 port ! Protocol 2,1 # 选择的 SSH 协议版本,可以是 1 也可以是 2 ,如果要同时支持两者,就必须要使用 2,1 这个分隔了!
ListenAddress 0.0.0.0 #监听的主机适配卡!举个例子来说,如果您有两个 IP,分别是 192.168.0.100 及 192.168.2.20 ,那么只想要开放 192.168.0.100 时, #就可以写如同下面的样式:ListenAddress 192.168.0.100 只监听来自 192.168.0.100 这个 IP 的SSH联机。 如果不使用设定的话,则预设所有接口均接受 SSH
PidFile /var/run/sshd.pid # 可以放置 SSHD 这个 PID 的档案!左列为默认值 LoginGraceTime 600 # 当使用者连上 SSH server 之后,会出现输入密码的画面,在该画面中,在多久时间内没有成功连上 SSH server ,就断线!时间为秒!
Compression yes # 是否可以使用压缩指令? HostKey /etc/ssh/ssh_host_key # SSH version 1 使用的私钥 HostKey /etc/ssh/ssh_host_rsa_key # SSH version 2 使用的 RSA 私钥 HostKey /etc/ssh/ssh_host_dsa_key # SSH version 2 使用的 DSA 私钥 KeyRegenerationInterval 3600 # 由前面联机的说明可以知道, version 1 会使用 server 的 Public Key ,每隔一段时间来重新建立一次!时间为秒!
ServerKeyBits 768 # Server key 的长度! SyslogFacility AUTH # 当有人使用 SSH 登入系统的时候,SSH会记录信息 LogLevel INFO # 登录记录的等级---》全部 PermitRootLogin no # 是否允许 root 登入!预设是允许的,但是建议设定成 no! UserLogin no # 在 SSH 底下本来就不接受 login 这个程序的登入! StrictModes yes # 当使用者的 host key 改变之后,Server 就不接受联机 RSAAuthentication yes # 是否使用纯的 RSA 认证!?仅针对 version 1 ! PubkeyAuthentication yes # 是否允许 Public Key ?只有 version 2 AuthorizedKeysFile .ssh/authorized_keys #设定若要使用不需要密码登入的账号时,那么那个账号的存放档案所在档名! RhostsAuthentication no # 本机系统不使用 .rhosts , .rhosts 不安全! IgnoreRhosts yes # 是否取消使用 ~/.ssh/.rhosts 来做为认证! RhostsRSAAuthentication no # 针对 version 1 ,使用 rhosts 档案在/etc/hosts.equiv配合 RSA 演算方式来进行认证! HostbasedAuthentication no # 这个项目与上面的项目类似,不过是给 version 2 使用的! IgnoreUserKnownHosts no # 是否忽略家目录内的 ~/.ssh/known_hosts 这个档案所记录的主机内容 PasswordAuthentication yes # 密码验证当然是需要的! PermitEmptyPasswords no # 上面那一项如果设定为 yes 的话,这一项就最好设定为 no ,这个项目在是否允许以空的密码登入! ChallengeResponseAuthentication yes # 挑战任何的密码认证!所以,任何 login.conf规定的认证方式,均可适用! PAMAuthenticationViaKbdInt yes # 是否启用其它的 PAM 模块!启用这个模块将会导致 PasswordAuthentication 设定失效!
#与Kerberos 有关的参数设定!底下不用设定
KerberosAuthentication no
KerberosOrLocalPasswd yes
KerberosTicketCleanup yes
KerberosTgtPassing no#有关在 X-Window 底下使用的相关设定
X11Forwarding yes
X11DisplayOffset 10
X11UseLocalhost yes
PrintMotd no # 登入后是否显示出一些信息呢?例如上次登入的时间、地点等,预设是 yes ,但是,如果为了安全,可以考虑改为 no !
PrintLastLog yes # 显示上次登入的信息!可以啊!预设也是 yes !
KeepAlive yes # 一般而言,如果设定这项目的话,那么 SSH Server 会传送KeepAlive 的讯息给 Client 端,以确保两者的联机正常!在这个情况下,任何一端死掉后, SSH 可以立刻知道!而不会有僵尸程序的发生!
UsePrivilegeSeparation yes # 使用者的权限设定项目!
MaxStartups 10 # 同时允许几个尚未登入的联机画面?
DenyUsers * # 设定受抵挡的使用者名称二:常用的SSH服务端远程登录配置与实践
配置文件 /ect/ssh/sshd_config
#常用参数:
Port # 可修改ssh访问端口,默认为22。默认在本机的所有网络接口上监听。端口范围:0~65535,不能与已有的服务器端口冲突PermitEmptyPasswords #是否允许密码为空的用户远程登录。默认为"no" PermitRootLogin #是否允许ssh远程登录root帐号,建议为no ClientAliveInterval 0 #客户端连接数做限制,根据需求设置 UseDNS #指定sshd是否应该对远程主机名进行方向解析,以检查此主机名是否与其IP地址真实对应。默认值为"yes"。个人建议改成no,否则可能会导致ssh连接很慢 GSSAPIAuthentication no #解决Linux之间使用SSH远程连接慢的问题 #限制可登录用户的办法如下: AllowUsers user1 user2 user3 #允许ssh登录用户 DenyUsers #禁止ssh登陆用户 AllowGroups #允许ssh登录用户组 DenyGroups #禁止ssh登陆用户组
#温馨提示:这里用虚拟机做测试,以免参数设置有误,连接不上。可以上真实虚拟机修改
[root@localhost ssh]# cp sshd_config sshd_config$(date +%F)[root@localhost ssh]# cat sshd_config Port 52168 #连接端口改为52168 PermitRootLogin no #不允许ssh远程登录root帐号 PermitEmptyPasswords no #不允许密码为空的用户远程登录 UseDNS no #不进行解析 GSSAPIAuthentication no #解决Linux之间使用SSH远程连接慢的问题 allowusers ywxi@192.168.1.11 #允许ywxi用户使用本机内网地址链接 denyusers ywxitest@192.168.1.11 #禁止ywxitest用户使用本机内网地址连接 [root@localhost ssh]# useradd ywxi #创建用户,用来测试 [root@localhost ssh]# useradd ywxitest [root@localhost ssh]# passwd ywxi #给ywxi用户设置密码,暂时不给ywxitest用户设置 [root@localhost ssh]# ifconfig |grep 'inet addr' #虚拟机IP地址 inet addr:192.168.1.8 Bcast:192.168.1.255 Mask:255.255.255.0 inet addr:127.0.0.1 Mask:255.0.0.0 [root@localhost ssh]# /etc/init.d/sshd restart #重启服务,使SSH服务端配置生效 Stopping sshd: [ OK ] Starting sshd: [ OK ] [root@localhost ssh]# grep 52168 /etc/sysconfig/iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 52168 -j ACCEPT #添加防火墙规则允许52168端口开放 [root@localhost ssh]# /etc/init.d/iptables restart iptables: Setting chains to policy ACCEPT: filter [ OK ] iptables: Flushing firewall rules: [ OK ] iptables: Unloading modules: [ OK ] iptables: Applying firewall rules: [ OK ]
以下是客户端用CRT工具通过sshd服务远程连接虚拟主机过程:
用root用户连接,一直会提示密码验证失败
修改配置PermitRootLogin yes 改为yes,注意有allowusers限制用户时需要把root用户也允许
修改后,重启sshd服务设置好端口后,root用户即可连接
三:更高级的SSH安全策略
限制用户登录IP的方法有两种;
1)修改/etc/hosts.allow和/etc/hosts.deny 这两个文件,把需要通过的IP写在/etc/hosts.allow 文件里 [root@localhost ~]# cat /etc/hosts.allow sshd:192.168.1.11:allow [root@localhost ~]# cat /etc/hosts.deny sshd:ALL [root@localhost ~]# /etc/init.d/sshd restart #重启服务使配置生效 2)修改/etc/ssh/sshd_config文件 [root@localhost ~]# cat /etc/ssh/sshd_config allowusers ywxi@192.168.1.11 allowusers root@192.168.1.11 denyusers ywxitest@192.168.1.11 [root@localhost ~]# /etc/init.d/sshd restart #重启服务使配置生效
更改SSH监听的IP,使其监听内网IP段或指定ip;
1)更改SSH监听的IP,使其监听内网IP段 [root@localhost ssh]# cat sshd_config|grep Listen ListenAddress 192.168.1.8:52168 2)通过防火墙限制仅能使用内网IP连接此服务器。限制命令如下 iptables -I INPUT -p -tcp --dport 52168 -s 192.168.1.0/24 -j ACCEPT 3)通过拨号到×××服务器,然后从局域网访问这些服务器,提升安全性。
四:ssh服务安全加强的建议(仅供参考,工作中根据需求来就好行)
1、不要使用默认端口 2、禁止使用protocol version 1 3、限制可登录用户 4、设定空闲会话超时时长 5、利用防火墙设置ssh访问策略 6、仅监听特定的IP地址 7、基于口令认证时,使用强密码策略 tr -dc A-Za-z0-9_ < /dev/urandom | head -c 30 | xargs 8、使用基于密钥的认证 9、禁止使用空密码 10、禁止root用户直接登录 11、限制ssh的访问频度和并发在线数 12、做好日志,经常分析 13、锁死sshd服务的配置文件,防止篡改,修改锁文件命令
解决centos7 sshd端口修改后,重启服务器sshd无法连接的问题
**针对centos7的变化,修改sshd端口需要修改/etc/ssh/sshd_config,selinux,防火墙
**1、修改/etc/ssh/sshd_config
执行命令:vi /etc/ssh/sshd_config 找到行 #Port 22 添加一行 Port 5000
2、修改SELinux 添加5000端口到 SELinux
执行命令:semanage port -m -t ssh_port_t -p tcp 5000
3、然后确认一下是否添加进去
执行命令:semanage port -l | grep ssh 如果成功会输出 ssh_port_t tcp 5000, 22
4、修改firewall配置
执行命令:firewall-cmd --zone=public --add-port=5000/tcp --permanent
5、重载防火墙
执行命令:firewall-cmd --reload
6、重启ssh服务
执行命令:systemctl restart sshd.service
7、测试新端口的ssh连接
执行命令:ssh xx.xx.xx.xx -p 5000
8、重启服务器,并测试ssh连接
执行命令:reboot
-
SSH框架demo
2016-03-22 15:55:40这是基于SSH框架的简单demo,里面详细写了关于SSH的框架搭建~~很适合学习哦! -
ssh 命令连接
2019-03-18 21:59:39SSH(远程连接工具)连接原理:ssh服务是一个守护进程(demon),系统后台监听客户端的连接,ssh服务端的进程名为sshd,负责实时监听客户端的请求(IP 22端口),包括公共秘钥等交换等信息。 ssh服务端由2部分组成: ...##Linuxssh命令详解
SSH(远程连接工具)连接原理:ssh服务是一个守护进程(demon),系统后台监听客户端的连接,ssh服务端的进程名为sshd,负责实时监听客户端的请求(IP22端口),包括公共秘钥等交换等信息。
ssh服务端由2部分组成:openssh(提供ssh服务)openssl(提供加密的程序)
ssh的客户端可以用XSHELL,Securecrt,Mobaxterm等工具进行连接
SSH的工作机制
服务器启动的时候自己产生一个密钥(768bit公钥),本地的ssh客户端发送连接请求到ssh服务器,服务器检查连接点客户端发送的数据和IP地址,确认合法后发送密钥(768bits)给客户端,此时客户端将本地私钥(256bit)和服务器的公钥(768bit)结合成密钥对key(1024bit),发回给服务器端,建立连接通过key-pair数据传输。
SSH的加密技术
加密技术:传输过程,数据加密。
1.SSH1没有对客户端的秘钥进行校验,很容易被植入恶意代码
2.SSH2增加了一个确认联机正确性的Diffe_Hellman机制,每次数据的传输,Server都会检查数据来源的正确性,避免黑客入侵。
SSH2支持RSA和DSA密钥
DSA:digitalsignatureAlgorithm数字签名
RSA:既可以数字签名又可以加密
SSH知识小结
1.SSH是安全的加密协议,用于远程连接Linux服务器
2.SSH的默认端口是22,安全协议版本是SSH2
3.SSH服务器端主要包含2个服务功能SSH连接和SFTP服务器
4.SSH客户端包含ssh连接命令和远程拷贝scp命令等
如何防止SSH登录入侵
1.密钥登录,更改端口
2.牤牛阵法
3.监听本地内网IP(ListenAddress192.168.25.*)
SSH功能大全
1.登录
ssh-p22omd@192.168.25.137
2.直接执行命令–>最好全路径
sshroot@192.168.25.137ls-ltr/backup/data
==>sshroot@192.168.25.137/bin/ls-ltr/backup/data
3.查看已知主机
cat/root/.ssh/known_hosts
4.ssh远程执行sudo命令
ssh-tomd@192.168.25.137sudorsynchosts/etc/
5.scp
1.功能–>远程文件的安全(加密)拷贝
scp-P22-r-p/home/omd/h.txtomd@192.168.25.137:/home/omd/
2.scp知识小结
scp是加密远程拷贝,cp为本地拷贝
可以推送过去,也可以拉过来
每次都是全量拷贝(效率不高,适合第一次),增量拷贝用rsync
6.ssh自带的sftp功能
1.Window和Linux的传输工具
wincpfilezip
sftp–>基于ssh的安全加密传输
samba
2.sftp客户端连接
sftp-oPort=22root@192.168.25.137
put/etc/hosts/tmp
get/etc/hosts/home/omd
3.sftp小结:
1.linux下使用命令:sftp-oPort=22root@x.x.x.x
2.put加客户端本地路径上传
3.get下载服务器端内容到本地
4.远程连接默认连接用户的家目录
ssh常见命令参数
usage:ssh[-1246AaCfgKkMNnqsTtVvXxYy][-bbind_address][-ccipher_spec]
[-D[bind_address:]port][-eescape_char][-Fconfigfile]
[-iidentity_file][-L[bind_address:]port:host:hostport]
[-llogin_name][-mmac_spec][-Octl_cmd][-ooption][-pport]
[-R[bind_address:]port:host:hostport][-Sctl_path]
[-Whost:port][-wlocal_tun[:remote_tun]]
[user@]hostname[command]
关于后台ssh服务的相关
#查询openssl软件
rpm-qaopensshopenssl
#查询sshd进程
ps-ef|grepssh
–>/usr/sbin/sshd
#查看ssh端口
netstat-lntup|grepssh
ss|grepssh(效果同上,同下,好用)
netstat-a|grepssh(记住这个)
netstat-lnt|grep22==>查看22端口有没有开/ssh服务有没有开启
技巧:netstat-lnt|grepssh|wc-l–>只要大于2个就是ssh服务就是好的
#查看ssh的秘钥目录
ll/root/.ssh/known_hosts#当前用户家目录的.ssh目录下
#ssh的配置文件
cat/etc/ssh/sshd_config
#ssh服务的关闭
servicesshdstop
#ssh服务的开启:
servicesshdstart
#ssh服务的重启
servicesshdreload[停止进程后重启]==>推荐
servicesshdrestart[干掉进程后重启]==>不推荐
#ssh远程登录
ssh192.168.1.100#默认利用当前宿主用户的用户名登录
sshomd@192.168.1.100#利用远程机的用户登录
sshomd@192.168.1.100-ostricthostkeychecking=no#首次登陆免输yes登录
sshomd@192.168.1.100"ls/home/omd"#当前服务器A远程登录服务器B后执行某个命令
sshomd@192.168.1.100-t"sh/home/omd/ftl.sh"#当前服务器A远程登录服务器B后执行某个脚本
ssh免密设置
1、进入用户的家目录
[root@localhost~]#cd/root/.ssh/【root用户就在root目录下的.ssh目录】
[root@localhost~]#cd/home/omd/.ssh/【普通用户就是在家目录下的.ssh目录】
image
2、根据DSA算法生成私钥和公钥【默认建立在当前用户的家目录】
[root@localhost.ssh]#ssh-keygen-tdsa#一路回车即可
id_dsa–>私钥(钥匙)
id_dsa.pub–>公钥(锁)
image
3.拷贝公钥给目标服务器
[root@localhost.ssh]#ssh-copy-id-iid_dsa.pubomd@192.168.25.110【使用ssh登录的默认端口22】
[root@localhost.ssh]#ssh-copy-id-iid_dsa.pub–p666omd@192.168.25.120【使用ssh登录设置的端口666】
4.查看目标服务器生成的文件
[omd@localhost.ssh]$ll/home/omd/.ssh/authorized_keys
image
5.免密码登录目标服务器
sshomd@192.168.25.110
6.总结一下钥匙和锁的关系
1.多个钥匙开一把锁
把id_dsa.pub复制给各个服务器
2.一个钥匙开duobasuo
把id_dsa传给各个服务器
把id_dsa传给自己
ssh排查问题
1.判断物理链路是否通ping192.168.25.130线路|防火墙|是否同一个网的
ping本身是icmp协议
2.判断服务是否正常
telnet192.168.25.13022
3.Linux防火墙
serviceiptablesstatus==>/etc/init.d/iptablesstatus
4.打开ssh的调测进行观察
ssh-vvvomd@192.168.1.100
SSH批量分发与管理方案小结
1.利用root做sshkey验证
优点:简单,易用
缺点:安全性能差,无法禁止root远程连接
2.利用普通用户omd–>推荐
思路:把要分发的文件拷贝到服务器用户的家目录,然后利用sudo提权拷贝分发的文件和对应目录
优点:安全
缺点:复杂,配置麻烦
1.sudo提权
echo’omdAll=(All)NOPASSWD:/usr/bin/rsync’>>/etc/sudoers
visudo-c
grepomd/etc/sudoers
2.ssh分发到服务器的家目录
ssh-p22-r/etc/hostsomd@192.168.25.137:~
3.ssh使用sudo复制到目标服务器的/etc
ssh-tomd@192.168.25.137sudorsynchosts/etc/
3.拓展方案2,不用sudo,而是设置suid对固定命令提权
优点:相当安全
缺点:复杂,安全性较差,任何人都可以处理带有suid权限的命令
1.whichrsync
2.chmod4755/usr/bin/rsync
ssh章节小结
1.ssh远程的加密连接协议,相关软件openssh,openssl
2.默认端口22
3.ssh版本协议
4.服务器ssh连接,ftp连接,sshd守护进程,开机启动
5.ssh客户端重要命令:ssh(用户登录&&远程命令),scp,sftp,
6.安全验证方式:口令,密钥学习原理
7.ssh服务优化:改端口,改监听,noroot,noempty,noDNS,
8.ssh密钥对,公钥在服务器端,私钥在客户端
修改ssh服务的启动文件sshd的几个点
1-1修改/etc/ssh/sshd_config
GSSAPIAuthenticationyes解决一台服务器管理多个ssh服务UseDNSno加快响应速度因为在内网环境下
PermitRootLoginno不运行root用户直接登录
Port11544更改访问端口号
ListenAddress192.168.25.130只监听内网的IP
MatchUseranoncvs当前环境允许登录的用户
PermitRootLoginno是否允许root用户登录,一般不允许开
1-2重启服务
servicesshdrestart写入命令进内存
servicesshdreload(优先)reload是一个平滑的访问,不影响用户使用
1-3查看连接端口
netstat-an|grepEST
SSH跳过HostKeyChecking,不用输入yes
SSH跳过输入ssh跳过RSAkeyfingerprint输入yes/no
在配置大量的节点之间需要ssh连通的时候,如果自动复制很多节点,都需要输入yes,两两节点之间都要互通一次,这样会造成很大的麻烦
解决1;修改配置文件/etc/ssh/ssh_config
找到#StrictHostKeyCheckingask
修改为:StrictHostKeyCheckingno
解决2:添加参数–o【o=option】
sshroot@192.168.25.133-o"StrictHostKeyCheckingno"
scp-o"StrictHostKeyCheckingno"newfile.txt<ahref=“mailto:root@192.168.25.133/root”>root@192.168.25.133:/root
ssh带密码登录之sshpass的安装
【下载地址】https://sourceforge.net/projects/sshpass/files/latest/download
上传文件到服务器
CentOS下安装:
[root@localhost~]#tarxfsshpass-1.06.tar.gz
[root@localhost~]#cdsshpass-1.06
[root@localhostsshpass-1.06]#./configure
[root@localhostsshpass-1.06]#make&&makeinstall
检查是否安装成功:
[root@localhostsshpass-1.06]#whichsshpass
/usr/local/bin/sshpass
远程登录主机:
sshpass-pFTL600@HHsshomd@192.168.25.110-o"StrictHostKeyCheckingno"
注意:如果是第一次登录,需要输入手动yes,此时sshpass并不会给提示,所以登录异常
Ubuntu下安装方法一[推荐]:简单
omd@omd-virtual-machine:~/sshpass-1.06$sudoaptinstallsshpass
安装成功:
omd@omd-virtual-machine:~/sshpass-1.06$whichsshpass
Ubuntu下安装方法二:
omd@omd-virtual-machine:~$tarxfsshpass-1.06.tar.gz
omd@omd-virtual-machine:~$cdsshpass-1.06/
omd@omd-virtual-machine:~/sshpass-1.06$./configure
omd@omd-virtual-machine:~/sshpass-1.06$sudomake&&makeinstall
其同CentOS下安装
ssh源码修改添加ssh访问标志位
【更多参考】https://www.cnblogs.com/ftl1012/p/9459819.htmlLinuxssh命令详解
SSH(远程连接工具)连接原理:ssh服务是一个守护进程(demon),系统后台监听客户端的连接,ssh服务端的进程名为sshd,负责实时监听客户端的请求(IP22端口),包括公共秘钥等交换等信息。
ssh服务端由2部分组成:openssh(提供ssh服务)openssl(提供加密的程序)
ssh的客户端可以用XSHELL,Securecrt,Mobaxterm等工具进行连接
SSH的工作机制
服务器启动的时候自己产生一个密钥(768bit公钥),本地的ssh客户端发送连接请求到ssh服务器,服务器检查连接点客户端发送的数据和IP地址,确认合法后发送密钥(768bits)给客户端,此时客户端将本地私钥(256bit)和服务器的公钥(768bit)结合成密钥对key(1024bit),发回给服务器端,建立连接通过key-pair数据传输。
SSH的加密技术
加密技术:传输过程,数据加密。
1.SSH1没有对客户端的秘钥进行校验,很容易被植入恶意代码
2.SSH2增加了一个确认联机正确性的Diffe_Hellman机制,每次数据的传输,Server都会检查数据来源的正确性,避免黑客入侵。
SSH2支持RSA和DSA密钥
DSA:digitalsignatureAlgorithm数字签名
RSA:既可以数字签名又可以加密
SSH知识小结
1.SSH是安全的加密协议,用于远程连接Linux服务器
2.SSH的默认端口是22,安全协议版本是SSH2
3.SSH服务器端主要包含2个服务功能SSH连接和SFTP服务器
4.SSH客户端包含ssh连接命令和远程拷贝scp命令等
如何防止SSH登录入侵
1.密钥登录,更改端口
2.牤牛阵法
3.监听本地内网IP(ListenAddress192.168.25.*)
SSH功能大全
1.登录
ssh-p22omd@192.168.25.137
2.直接执行命令–>最好全路径
sshroot@192.168.25.137ls-ltr/backup/data
==>sshroot@192.168.25.137/bin/ls-ltr/backup/data
3.查看已知主机
cat/root/.ssh/known_hosts
4.ssh远程执行sudo命令
ssh-tomd@192.168.25.137sudorsynchosts/etc/
5.scp
1.功能–>远程文件的安全(加密)拷贝
scp-P22-r-p/home/omd/h.txtomd@192.168.25.137:/home/omd/
2.scp知识小结
scp是加密远程拷贝,cp为本地拷贝
可以推送过去,也可以拉过来
每次都是全量拷贝(效率不高,适合第一次),增量拷贝用rsync
6.ssh自带的sftp功能
1.Window和Linux的传输工具
wincpfilezip
sftp–>基于ssh的安全加密传输
samba
2.sftp客户端连接
sftp-oPort=22root@192.168.25.137
put/etc/hosts/tmp
get/etc/hosts/home/omd
3.sftp小结:
1.linux下使用命令:sftp-oPort=22root@x.x.x.x
2.put加客户端本地路径上传
3.get下载服务器端内容到本地
4.远程连接默认连接用户的家目录
ssh常见命令参数
usage:ssh[-1246AaCfgKkMNnqsTtVvXxYy][-bbind_address][-ccipher_spec]
[-D[bind_address:]port][-eescape_char][-Fconfigfile]
[-iidentity_file][-L[bind_address:]port:host:hostport]
[-llogin_name][-mmac_spec][-Octl_cmd][-ooption][-pport]
[-R[bind_address:]port:host:hostport][-Sctl_path]
[-Whost:port][-wlocal_tun[:remote_tun]]
[user@]hostname[command]
关于后台ssh服务的相关
#查询openssl软件
rpm-qaopensshopenssl
#查询sshd进程
ps-ef|grepssh
–>/usr/sbin/sshd
#查看ssh端口
netstat-lntup|grepssh
ss|grepssh(效果同上,同下,好用)
netstat-a|grepssh(记住这个)
netstat-lnt|grep22==>查看22端口有没有开/ssh服务有没有开启
技巧:netstat-lnt|grepssh|wc-l–>只要大于2个就是ssh服务就是好的
#查看ssh的秘钥目录
ll/root/.ssh/known_hosts#当前用户家目录的.ssh目录下
#ssh的配置文件
cat/etc/ssh/sshd_config
#ssh服务的关闭
servicesshdstop
#ssh服务的开启:
servicesshdstart
#ssh服务的重启
servicesshdreload[停止进程后重启]==>推荐
servicesshdrestart[干掉进程后重启]==>不推荐
#ssh远程登录
ssh192.168.1.100#默认利用当前宿主用户的用户名登录
sshomd@192.168.1.100#利用远程机的用户登录
sshomd@192.168.1.100-ostricthostkeychecking=no#首次登陆免输yes登录
sshomd@192.168.1.100"ls/home/omd"#当前服务器A远程登录服务器B后执行某个命令
sshomd@192.168.1.100-t"sh/home/omd/ftl.sh"#当前服务器A远程登录服务器B后执行某个脚本
ssh免密设置
1、进入用户的家目录
[root@localhost~]#cd/root/.ssh/【root用户就在root目录下的.ssh目录】
[root@localhost~]#cd/home/omd/.ssh/【普通用户就是在家目录下的.ssh目录】
image
2、根据DSA算法生成私钥和公钥【默认建立在当前用户的家目录】
[root@localhost.ssh]#ssh-keygen-tdsa#一路回车即可
id_dsa–>私钥(钥匙)
id_dsa.pub–>公钥(锁)
image
3.拷贝公钥给目标服务器
[root@localhost.ssh]#ssh-copy-id-iid_dsa.pubomd@192.168.25.110【使用ssh登录的默认端口22】
[root@localhost.ssh]#ssh-copy-id-iid_dsa.pub–p666omd@192.168.25.120【使用ssh登录设置的端口666】
4.查看目标服务器生成的文件
[omd@localhost.ssh]$ll/home/omd/.ssh/authorized_keys
image
5.免密码登录目标服务器
sshomd@192.168.25.110
6.总结一下钥匙和锁的关系
1.多个钥匙开一把锁
把id_dsa.pub复制给各个服务器
2.一个钥匙开duobasuo
把id_dsa传给各个服务器
把id_dsa传给自己
ssh排查问题
1.判断物理链路是否通ping192.168.25.130线路|防火墙|是否同一个网的
ping本身是icmp协议
2.判断服务是否正常
telnet192.168.25.13022
3.Linux防火墙
serviceiptablesstatus==>/etc/init.d/iptablesstatus
4.打开ssh的调测进行观察
ssh-vvvomd@192.168.1.100
SSH批量分发与管理方案小结
1.利用root做sshkey验证
优点:简单,易用
缺点:安全性能差,无法禁止root远程连接
2.利用普通用户omd–>推荐
思路:把要分发的文件拷贝到服务器用户的家目录,然后利用sudo提权拷贝分发的文件和对应目录
优点:安全
缺点:复杂,配置麻烦
1.sudo提权
echo’omdAll=(All)NOPASSWD:/usr/bin/rsync’>>/etc/sudoers
visudo-c
grepomd/etc/sudoers
2.ssh分发到服务器的家目录
ssh-p22-r/etc/hostsomd@192.168.25.137:~
3.ssh使用sudo复制到目标服务器的/etc
ssh-tomd@192.168.25.137sudorsynchosts/etc/
3.拓展方案2,不用sudo,而是设置suid对固定命令提权
优点:相当安全
缺点:复杂,安全性较差,任何人都可以处理带有suid权限的命令
1.whichrsync
2.chmod4755/usr/bin/rsync
ssh章节小结
1.ssh远程的加密连接协议,相关软件openssh,openssl
2.默认端口22
3.ssh版本协议
4.服务器ssh连接,ftp连接,sshd守护进程,开机启动
5.ssh客户端重要命令:ssh(用户登录&&远程命令),scp,sftp,
6.安全验证方式:口令,密钥学习原理
7.ssh服务优化:改端口,改监听,noroot,noempty,noDNS,
8.ssh密钥对,公钥在服务器端,私钥在客户端
修改ssh服务的启动文件sshd的几个点
1-1修改/etc/ssh/sshd_config
GSSAPIAuthenticationyes解决一台服务器管理多个ssh服务UseDNSno加快响应速度因为在内网环境下
PermitRootLoginno不运行root用户直接登录
Port11544更改访问端口号
ListenAddress192.168.25.130只监听内网的IP
MatchUseranoncvs当前环境允许登录的用户
PermitRootLoginno是否允许root用户登录,一般不允许开
1-2重启服务
servicesshdrestart写入命令进内存
servicesshdreload(优先)reload是一个平滑的访问,不影响用户使用
1-3查看连接端口
netstat-an|grepEST
SSH跳过HostKeyChecking,不用输入yes
SSH跳过输入ssh跳过RSAkeyfingerprint输入yes/no
在配置大量的节点之间需要ssh连通的时候,如果自动复制很多节点,都需要输入yes,两两节点之间都要互通一次,这样会造成很大的麻烦
解决1;修改配置文件/etc/ssh/ssh_config
找到#StrictHostKeyCheckingask
修改为:StrictHostKeyCheckingno
解决2:添加参数–o【o=option】
sshroot@192.168.25.133-o"StrictHostKeyCheckingno"
scp-o"StrictHostKeyCheckingno"newfile.txt<ahref=“mailto:root@192.168.25.133/root”>root@192.168.25.133:/root
ssh带密码登录之sshpass的安装
【下载地址】https://sourceforge.net/projects/sshpass/files/latest/download
上传文件到服务器
CentOS下安装:
[root@localhost~]#tarxfsshpass-1.06.tar.gz
[root@localhost~]#cdsshpass-1.06
[root@localhostsshpass-1.06]#./configure
[root@localhostsshpass-1.06]#make&&makeinstall
检查是否安装成功:
[root@localhostsshpass-1.06]#whichsshpass
/usr/local/bin/sshpass
远程登录主机:
sshpass-pFTL600@HHsshomd@192.168.25.110-o"StrictHostKeyCheckingno"
注意:如果是第一次登录,需要输入手动yes,此时sshpass并不会给提示,所以登录异常
Ubuntu下安装方法一[推荐]:简单
omd@omd-virtual-machine:~/sshpass-1.06$sudoaptinstallsshpass
安装成功:
omd@omd-virtual-machine:~/sshpass-1.06$whichsshpass
Ubuntu下安装方法二:
omd@omd-virtual-machine:~$tarxfsshpass-1.06.tar.gz
omd@omd-virtual-machine:~$cdsshpass-1.06/
omd@omd-virtual-machine:~/sshpass-1.06$./configure
omd@omd-virtual-machine:~/sshpass-1.06$sudomake&&makeinstall
其同CentOS下安装
ssh源码修改添加ssh访问标志位
【更多参考】https://www.cnblogs.com/ftl1012/p/9459819.html
-
Windows安装SSH
2022-04-08 08:58:37安装ssh客户端4.安装ssh服务端5.启动并配置 OpenSSH 服务器2.自己安装配置1.下载安装包2.解压3.配置环境变量4.服务安装5.开放端口6.配置开机自启sshd服务7.启动ssh服务端8.测试ssh连接 1.微软官网安装教程 官网文档... -
什么是SSH 以及常见的ssh 功能
2018-06-28 18:02:54什么是SSH?简单说,SSH是一种网络协议,用于计算机之间的加密登录。如果一个用户从本地计算机,使用SSH协议登录另一台远程计算机,我们就可以认为,这种登录是安全的,即使被中途截获,密码也不会泄露。最早的时候... -
SSH框架实现简单的用户管理系统(增删改查)
2015-04-15 10:13:17SSH简单的入门案例,对用户的信息进行管理,实现增删改查功能。 -
ssh详解
2018-09-19 13:15:07本文对SSH连接验证机制进行了非常详细的分析,还详细介绍了ssh客户端工具的各种功能,相信能让各位对ssh有个全方位较透彻的了解,而不是仅仅只会用它来连接远程主机。 另外,作者翻译了ssh客户端命令的man文档,如... -
ssh-keygen产生公钥与私钥对,及密钥分发,ssh远程执行常用命令方法,和如何防止SSH登录入侵或被破解
2021-01-08 17:38:04SSH(远程连接工具)连接原理:ssh服务是一个守护进程(demon),系统后台监听客户端的连接,ssh服务端的进程名为sshd,负责实时监听客户端的请求(IP 22端口),包括公共秘钥等交换等信息。 ssh服务端由2部分组成: ... -
github ssh git使用指定的ssh文件名
2021-08-16 14:48:58以管理员身份运行powershell 使用你的github账号邮箱生成一个ssh key ssh-keygen -t ed25519 -C "your@mail.com" -f "你想...查看是否设置ssh-agent,如下图情况则为ssh-agent未运行 ssh-add -l [外链图片转存失败.. -
jenkins配置ssh服务器&配置ssh servers
2021-12-30 11:01:36jenkins配置ssh服务器&配置ssh servers -
Docker 容器里安装ssh和连接ssh
2021-11-03 11:21:36重启ssh服务 root@be4defdb43d7:/# /etc/init.d/ssh restart Restarting OpenBSD Secure Shell server sshd 本机连接ssh root@LIZ:~# ssh root@0.0.0.0 -p 6789 然后输入密码 好了,直接连上了。如果你先在其他电脑... -
SSH协议解析及wireshark抓包分析
2021-07-11 08:42:15ssh中文名称叫安全外壳协议,是一种加密的网络传输协议。SSH 在 TCP 和 UDP 中都被分配了端口 22。 但是,由于需要可靠的通信、正确的数据包排序等,该协议主要在 TCP 上运行。 为什么需要SSH? SSH 和 telnet 之间... -
OpenSSH概念和基本用法——SSH 客户端
2021-01-04 23:59:47由于在分布式数据库运维过程中进行脚本自动化必然会涉及SSH登录工具,故摘抄此篇文章以供学习之用。 SSH 是 Linux 系统的登录工具,现在广泛用于服务器登录和各种加密通信。本教程介绍 SSH(主要是它的实现 OpenSSH... -
配置ssh过程
2022-01-25 19:26:351.创建ssh公钥 ssh-keygen -t rsa -C xxx@xxx(自己的邮箱地址) 2.进入.ssh文件夹下的id_rsa.pub,并将其内容复制 3.在github的设置的创建ssh密钥的地方,新建一个钥匙 3.1将刚才复制的内容放在title下面的大框框... -
SSH介绍与神器Tabby
2022-01-06 16:41:49本文介绍了什么是SSH、SSH的原理和使用。适合新手阅读。 -
ssh免密登录
2022-01-03 11:47:05ssh免密登录 1、简洁操作 主机A免密码登录主机B:将A的公钥上传到主机B 1.1、 在主机A创建密钥对 ssh-keygen #创建证书 #然后均回车(选择默认) 1.2、将公钥文件上传至免登录主机B ssh-copy-id -i ~/.ssh/id_rsa.... -
SSH远程登录
2021-08-15 09:54:29SSH分为客户端 openssh-client 和服务器 openssh-server,可以利用以下命令确认电脑上是否安装了客户端和服务器。 dpkg -l | grep ssh 如果只是想远程登陆别的机器只需要安装客户端(Ubuntu默认安装了客户端),... -
最全SSH命令 - 11种用法
2022-01-12 10:56:16SSH命令1.使用ssh连接远程主机2.ssh连接到其他端口3.使用ssh在远程主机执行一条命令并显示到本地, 然后继续本地工作4.在远程主机运行一个图形界面的程序5.如何配置 SSH6.构建 ssh 密钥对7.查看是否已经添加了对应... -
生成ssh公钥(ssh-keygen)
2021-10-15 11:50:10生成ssh公钥(ssh-keygen) 一、进入码云的官网地址 没有账号就注册账号,有账号直接登录 二、生成/添加SSH公钥 你可以按如下命令来生成 sshkey: ssh-keygen -t ed25519 -C "xxxxx@xxxxx.com" # Generating public/... -
Linux配置SSH免密登录
2022-03-20 16:21:34Linux配置SSH免密登录