前言ssh相当于windows上的远程桌面连接,只是没有桌面,只有一个文本终端。ssh是很多Linux用户在入门时必须学习的一个命令。借助ssh,开发者可以方便地连接到远程或局域网中的其他计算机,直接在上面进行开发。以我平时的工作流程为例。每天去实验室的时候,先在mac上打开item2终端,连接两个扩展屏,然后ssh进几个服务器,切换到tmux。大部分工作可以在一个终端上完成。可以说,用好ssh,我们可以更舒心地进行远程连接;善用终端,开发者可以更顺利的完成自己的开发工作。我整理的一些Linux学习的书籍和笔记在这里。妓女兄弟点击领取即可。Linux学习书籍和笔记合集,那么这篇文章会让你对SSH有更深入的了解。大致内容如下:工作机制防止入侵的加密技术功能常用参数盘点服务相关免密码设置疑难解答批量分发与管理解决方案文件配置SSH远程连接工具)连接原理:ssh服务是守护进程(demon),系统在后台监听客户端的连接,ssh服务器的进程叫做sshd,负责实时监听客户端的请求(IP22端口),包括公钥的交换等和其他信息。ssh服务器由2部分组成:openssh(提供ssh服务)openssl(提供加密程序)ssh客户端可以使用XSHELL、Securecrt、Mobaxterm等工具连接SSH工作机制服务器启动时,会自行生成密钥(768bit)公钥),本地ssh客户端向ssh服务器发送连接请求,服务器在连接点检查客户端发送的数据和IP地址,确认合法后将密钥(768位)发送给客户端.密钥(256bit)和服务器的公钥(768bit)组合成密钥对key(1024bit),传回服务器,通过密钥对数据传输建立连接。1、远程服务器收到客户端用户TopGun的登录请求,服务器将自己的公钥发送给用户。2.客户端使用这个公钥加密密码。3、客户端将加密后的密码发送给服务器。4、远程服务器用自己的私钥解密登录密码,然后验证其合法性。5、如果验证结果通过,客户端如何保证收到的公钥是目标服务器对客户端的对应响应?1.客户端将自己的公钥存储在服务器上,并将其附加到文件authorized_keys中。2、服务端收到客户端的连接请求后,会在authorized_keys中匹配客户端的公钥pubKey,并生成一个随机数R,用客户端的公钥加密随机数得到pubKey(R),然后对信息进行加密被发送到客户端。3、客户端用私钥解密得到随机数R,然后用MD5对随机数R和本次会话的SessionKey生成摘要Digest1,发送给服务器端。4、服务端也会对R和SessionKey使用相同的摘要算法生成Digest2。5、服务器最后会比较Digest1和Digest2是否相同,完成认证过程。了解更多...SSH加密技术加密技术:传输过程、数据加密。1、SSH1不验证客户端秘钥,容易被植入恶意代码。2、SSH2增加了Diffe_Hellman机制来确认连接的正确性。每次传输数据时,服务器都会检查数据源的正确性,避免被黑客攻击。SSH2支持RSA和DSA密钥DSA:digitalsignatureAlgorithmdigitalsignatureRSA:bothdigitalsignatureandencryption安全协议版本为SSH23。SSH服务器主要包括两个服务功能:SSH连接和SFTP服务器4.SSH客户端包括ssh连接命令和remotecopyscp命令等如何防止SSH登录入侵1.按键登录,更改端口2.蛇阵法3.监听本机内网IP(ListenAddress192.168.25.*)SSH功能百科1.登录ssh-p22omd@192.168.25.1372.直接执行命令-->最好全路径sshroot@192.168。25.137ls-ltr/backup/data==>sshroot@192.168.25.137/bin/ls-ltr/backup/data3.查看已知主机cat/root/.ssh/known_hosts4.ssh远程执行sudo命令ssh-tomd@192.168.25.137sudorsynchosts/etc/5.scp1.功能-->远程文件的安全(加密)副本scp-P22-r-p/home/omd/h.txtomd@192.168.25.137:/home/omd/二、scp知识总结scp是加密的远程副本,cp是可以推送过去的本地副本,也可以拉过来,每次全量拷贝(效率不高,适合第一次用),增量拷贝用rsync6.ssh自带的sftp功能1.传输工具wincpfilezipsftpforWindowsandLinux-->基于sshSecure加密传输samba2.sftp客户端连接sftp-oPort=22root@192.168.25.137put/etc/hosts/tmpget/etc/hosts/home/omd3.sftp总结:1.使用linux下命令:sftp-oPort=22root@x.x.x.x2.put加上客户端上传的本地路径3.get将服务器端内容下载到本地4.远程连接默认连接到用户家目录ssh常用命令参数用法:ssh[-1246AaCfgKkMNnqsTtVvXxYy][-bbind_address][-ccipher_spec][-D[bind_address:]port][-eescape_char][-Fconfigfile][-iidentity_file][-L[bind_address:]端口:主机: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|grepsshss|grepssh(上同下同,好用)netstat-a|grepssh(记住这个)netstat-lnt|grep22==>viewport22有没有开启/ssh服务?有没有开启技巧:netstat-lnt|grepssh|wc-l-->只要有2个以上,ssh服务就好。#查看ssh密钥目录ll/root/.ssh/known_hosts#当前用户主目录.ssh目录下#ssh配置文件cat/etc/ssh/sshd_config#sshserviceshutdownservicesshdstop#sshservicestartup:servicesshdstart#sshservicerestartservicesshdreload[停止进程后重启]==>推荐服务sshdrestart[杀掉进程后重启]==>不推荐#ssh远程登录ssh192.168.1.100#默认登录用户为当前主机用户sshomd@192.168.1.100#使用远程机器登录的用户sshomd@192.168.1.100-ostricthostkeychecking=no#首次登录无需输入yessshomd@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用户在根目录下的.ssh目录][root@localhost~]#cd/home/omd/.ssh/[普通用户在.ssh目录下home目录]2.根据DSA算法生成私钥和公钥[默认建立在当前用户的home目录][root@localhost.ssh]#ssh-keygen-tdsa#一路输入id_dsa-->私钥(key)id_dsa.pub-->公钥(lock)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_keys5.免密码登录目标服务器sshomd@192.168.25.1106。总结一下钥匙和锁的关系1.多把钥匙开一把锁,复制id_dsa.pub到各台服务器2.一把钥匙打开多巴索,给各台服务器发送id_dsa把id_dsa传给自己ssh排查1.判断物理链路是否ping192.168.25。130线|防火墙|ping同一个网络本身是否是icmp协议2.判断服务是否正常telnet192.168.25.130223.Linux防火墙服务iptablesstatus==>/etc/init.d/iptablesstatus 4.开启ssh调试观察ssh-vvvomd@192.168.1.100SSH批量分发及管理方案总结1.使用root进行ssh密钥校验优点:简单易用缺点:安全性能较差,无法禁止root远程连接2.使用普通用户omd(推荐)思路:将要分发的文件复制到服务器用户家目录下,然后使用sudo提权复制分发的文件和对应目录优点:安全缺点:复杂,配置麻烦=(全部)NOPASSWD:/usr/bin/rsync'>>/etc/sudoersvisudo-cgrepomd/etc/sudoers2.ssh分发到服务器主目录ssh-p22-r/etc/hostsomd@192.168.25.137:~3.ssh使用sudo复制到目标服务器的/etcssh-tomd@192.168.25.137sudorsynchosts/etc/,安全性差,任何人都可以用suid权限处理命令1.whichrsync2.chmod4755/usr/bin/rsyncssh章节总结1.ssh远程加密连接协议,相关软件openssh、openssl2。默认端口223。ssh版本协议4.服务器ssh连接、ftp连接、sshd守护进程、启动5.ssh客户端重要命令:ssh(用户登录&&远程命令)、scp、sftp6.安全验证方式:密码、Key学习原理7.ssh服务优化:改端口,改监听,无root,无空,无DNS,8.ssh密钥对,公钥在服务器端,私钥在客户端。修改ssh服务的启动文件sshd几点1-1修改/etc/ssh/sshd_config
GSSPAPIAuthenticationyes解决一台服务器管理多个ssh服务UseDNSno由于内网环境加快响应速度PermitRootLoginno不运行root用户直接登录11544端口修改访问端口号ListenAddress192.168。25.130只监听内网IP匹配用户anoncvs当前环境允许登录的用户PermitRootLoginno是否允许root用户登录,一般不允许开启1-2重启服务servicesshdrestart将命令写入内存servicesshdreload(priority)reload是平滑访问,不影响用户使用1-3查看连接端口netstat-an|grepESTSSHskipHostKeyChecking,不需要输入yesSSHskipinputsshskipRSAkeyfingerprintinputyes/no当配置大量需要ssh连接的节点时,如果自动复制节点很多需要输入yes,而且两个节点必须通信彼此相处一次,就会惹来很多麻烦。解决方案1;修改配置文件/etc/ssh/ssh_config,找到#StrictHostKeyCheckingask,修改为:StrictHostKeyCheckingno解决方法二:添加参数-o[o=option]sshroot@192.168.25.133-o"StrictHostKeyCheckingno"sshwithpasswordloginsshpass安装【下载地址】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下安装方法一【推荐】:simpleomd@omd-virtual-machine:~/sshpass-1.06$sudoaptinstallsshpass安装成功:omd@omd-virtual-machine:~/sshpass-1.06$whichsshpass安装方法二在Ubuntu下:omd@omd-virtual-machine:~$tarxfsshpass-1.06.tar.gzomd@omd-virtual-machine:~$cdsshpass-1.06/omd@omd-virtual-machine:~/sshpass-1.06$./configureomd@omd-virtual-machine:~/sshpass-1.06$sudomake&&makeinstall和在CentOS下安装ssh附带的配置文件是一样的。配置文件这里就不贴了,免得你说我话多,我在这个《Linux命令大全》里,还有一些其他关于Linux的学习资料,大家可以免费分享给大家,点一下下面的蓝色字直接接收。这合理吗?这是不合理的!!!
