关于ssh:SSH终端使用高级篇

1 SSH终端快捷按钮的应用在对话框按快捷键“ctrl”+"h",能够弹出脚本代码,快捷输出。 2 切换终端格调对话框右下角,点击可切换终端格调; 点击可切换文字大小。 3 关上文件图形和文件字符窗口右键连贯,抉择“关上”,即可关上“文件图形窗口”及“文件字符窗口”。 文件图形窗口: 文件字符窗口: 4 窗口列选如图所示,点击可切换“行选”和“列选”抉择“列选”,即可独自选中“列”。

September 20, 2023 · 1 min · jiezi

关于ssh:ssh-远程执行命令-command-not-found问题

近程主机已配置为密钥登录(可参考文档https://wangdoc.com/ssh/key进行配置)ssh console zkServer.sh -h: command not found 如果登录进近程主机,再执行命令 1 ssh console2 zkServer.sh -h 剖析:1 zkServer.sh command可能拜访,是因为配置了环境变量ZK_HOME比照下面两种场景,发现ssh近程执行命令,env相干环境变量缺失ssh近程执行命令:ssh进入主机后,执行命令 从这点,咱们能得出是shell问题

August 21, 2023 · 1 min · jiezi

关于ssh:ssh-远程执行命令-command-not-found问题

近程主机已配置为密钥登录(可参考文档https://wangdoc.com/ssh/key进行配置)ssh console zkServer.sh -h: command not found 如果登录进近程主机,再执行命令 1 ssh console2 zkServer.sh -h 剖析:1 zkServer.sh command可能拜访,是因为配置了环境变量ZK_HOME比照下面两种场景,发现ssh近程执行命令,env相干环境变量缺失ssh近程执行命令:ssh进入主机后,执行命令 从这点,咱们能得出是shell问题

August 21, 2023 · 1 min · jiezi

关于ssh:阿里云Linux服务器SSH启用密钥对连接

前言当SSH启用密钥对之后就会禁止明码连贯,这种状况下安全性会大大增强。而像阿里云这种云服务供应商则把这个流程变得非常简单。在买服务器的时候就能够主动配置,咱们要做的就是晓得怎么连贯它。 创立实例的注意事项在ECS购买页面,抉择Linux或Freebsd之后,上面就能够抉择密钥对连贯: 此时如果没有密钥对就创立一个: 点击确认后,会下载私钥文件,并且密钥对列表多了一条数据: 这里须要留神:私钥只能下载一次,请妥善保留,不能泄露也不能遗失。 回到购买页面就有密钥对可选了: 创立实现后,这台ECS就只容许私钥连贯了,如果用明码是连不上的。 连贯通过阿里云自带的Workbench在阿里云的ECS治理窗口点击近程连贯抉择第一个即可: 首次连贯时,上传刚刚下载的私钥,即可连贯胜利: 通过终端的SSH大多数状况下,咱们会嫌麻烦,不想先登阿里云,而后上传私钥...(懒催生了效率)对于间接用终端的状况,用私钥和用公钥不太一样,公钥是间接把文件扔在~/.ssh,而后像平常那样间接连就能够了。在Github/Gitlab拉代码的时候就用到了相似性能:https://segmentfault.com/a/1190000041713720 而阿里云这个.pem格局的文件,官网文档上给出了用法: ssh -i ~/ecs.pem ecs-user@10.10.xx.xxx命令很简略,但连贯时可能会呈现WARNING: UNPROTECTED PRIVATE KEY FILE!: @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ WARNING: UNPROTECTED PRIVATE KEY FILE! @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@Permissions 0666 for '/home/testuser/ssh.pem' are too open.It is required that your private key files are NOT accessible by others.This private key will be ignored.Load key "/home/testuser/ssh.pem": bad permissionsuser@123.123.123.123: Permission denied (publickey).翻译一下就是:出于平安思考,你的私钥有多余的权限(Linux权限分为读、写、执行,并且对于本人、同组的人、其他人能够别离设置权限)呈现上述提醒时,阐明除了本人以外,同组人和其他人也对这个文件有权限,这样可能导致私钥泄露所以,要把密钥的权限改为400(仅本人有读权限) chmod 400 ~/ssh.pem而后就胜利了。 第三方客户端Linux有个开源的近程客户端Remmina,反对RDP、SSH、SPICE、VNC、X2Go、HTTP/HTTPS。 装置也比较简单,以Ubuntu为例: sudo apt-add-repository ppa:remmina-ppa-team/remmina-nextsudo apt updatesudo apt install remmina remmina-plugin-rdp remmina-plugin-secret而后新建一个连贯: ...

June 13, 2023 · 1 min · jiezi

关于ssh:使用HHDBCS的SSH通道登陆数据库

传统近程登录或文件传输方式,例如Telnet、FTP,应用明文传输数据,存在很多的安全隐患。随着人们对网络安全的器重,SSH协定曾经越来越被用户所青眼。SSH协定通过对网络数据进行加密和验证,在不平安的网络环境中提供了平安的登录和其余平安网络服务。因而HHDBCS提供了SSH通道的登陆形式,供用户抉择。1、关上HHDBCS,或者点击主页上的“连贯治理”,弹出对话框;2、抉择如下图箭头所示的“SSH”标签;3、在“是否启用SSH通道”后面勾选;4、顺次填入各项数据。 点击登陆,即能够SSH协定的形式连贯数据库。 后记:应用 SSH 的多个益处:1、当服务器端口被封闭时,连贯到应用了防火墙的服务器。2、主动验证用户,没有发送纯文本的明码,以避免窃取明码。3、多个弱小的认证办法,避免平安威逼如坑骗的身份。4、平安和疾速的加密和压缩数据。5、平安文件传输。为确保进来的连贯申请是由你收回,SSH 可能应用明码,或公开及私钥对(也称为公钥)验证机制。

June 2, 2023 · 1 min · jiezi

关于ssh:ssh远程登录闪退

日志文件auth.log提醒 shmget fail error (设施上没有空间)//查看零碎最小共享内存设置# sysctl kernel.shmmni# ipcs -lm # getconf PAGESIZE 4096KBps:以上任意命令都能够查看//查看以后零碎最小共享内存调配# ipcs -u | grep segments # lsipc | grep segments4096KB 批改最小内存内存段大小 # echo "kernel.shmmni = 8192" >> /etc/sysctl.conf# sysctl -p之后登录失常

April 24, 2023 · 1 min · jiezi

关于ssh:SSH-备忘清单开发速查表分享

SSH 备忘清单IT宝库整顿的SSH疾速参考备忘单提供了应用 SSH 的各种办法。入门,为开发人员分享疾速参考备忘单。 开发速查表纲要入门 连贯执行SCP配置地位SCP 选项配置示例ProxyJumpssh-copy-idSSH keygen ssh-keygen产生钥匙类型known_hosts密钥格局另见

March 24, 2023 · 1 min · jiezi

关于ssh:ubuntu1804配置ssh免密登录远程服务器

创立密匙 ssh-keygen -t rsa -f ~/.ssh/id_65_rsa将公钥发送给近程服务器 ssh-copy-id -i id_65_rsa.pub -p 22 frank@192.168.1.110输出明码 验证登录,曾经不须要明码 ssh -p 22 frank@192.168.1.110

November 21, 2022 · 1 min · jiezi

关于ssh:SSH-公钥私钥的生成管理

一、生成公钥/私钥对生成公钥/私钥对的命令(Windows/Linux): ssh-keygen -b 4096 -C 张三 -N password -f ./zhangsan-key参数阐明: -b 4096:示意密钥的长度,倡议 4096 起。-C 张三:在公钥开端加上正文,表名这是谁的公钥。-N password:设置私钥明码。如果想在生成过程中输出明码,能够不必这个参数。-f [file]: 设置生成的密钥保留文件名,生成胜利后会失去 [file] 和 [file].pub 两个文件。公钥与私钥ssh-keygen 命令会生成两个文本文件,一个带 .pub 结尾,内容只有一行,这是公钥;另一个不带 .pub 结尾,内容有很多行,这是私钥。公钥和私钥是相对惟一的一对,其中公钥内容是能够公开的,而私钥内容则须要小心保存。 二、将公钥/私钥对用于 SSH 登录将公钥增加到服务器的 .authorized_key 文件中。该文件的格局是每行一个公钥。例如你想通过私钥登录 user 用户,则将公钥内容追加到 /home/user/.ssh/.authorized_key 文件中。在你的 SSH 客户端上增加你的私钥(通常 SSH 客户端中能够治理多个私钥),并在登录设置中,设置帐号名为 user,登录模式为私钥。三、保留你的私钥你的私钥十分重要,请妥善保存。它只是一个文本文件,所以能够保留到你的在线笔记当中。留神不要公开你的私钥文件内容,不要让他人把你的私钥拷贝走了。 万一你的私钥被拷贝走了但他人是无奈间接应用你的私钥的,最初一道防线就是你创立私钥时设置的、用于关上私钥的明码。盗取你私钥的人没有明码就无奈关上私钥。然而通过暴力破解,仍旧是有可能在肯定工夫内猜出你的明码来。 因而万一你的私钥被裸露进来了,最平安的应答形式是从新生成公钥/私钥对(当然不能持续用原来的私钥明码!),而后去服务器上用新的公钥替换你现有的公钥。

September 26, 2022 · 1 min · jiezi

关于ssh:SSH配置文件管理SSH-Config-Editor-Pro

SSH Config Editor for Mac是一款运行在mac上的SSH配置编辑软件。SSH配置编辑器 Mac能够帮忙用户治理ssh配置文件,如果您的电脑上有ssh配置文件,那么更加须要应用SSH Config Editor for Mac。应用SSH Config Editor Mac不便大家批改、增加、治理SSH配置文件。 SSH配置文件治理SSH Config Editor Pro

September 4, 2022 · 1 min · jiezi

关于ssh:设置-SSH-别名登录

昨天在百度云买了一台云服务器,因为每次近程的时候都要输出命令,切实是不想每次都输 ip、明码。看了网上的教程,参差不齐,写一下本人在配置过程中遇到的坑 ssh username@ip生成 ssh 密钥文件ssh-keygenMac: ~/.ssh/id_rsa~/.ssh/id_rsa.pubWindows: C:/Users/{username}/.ssh/id_rsaC:/Users/{username}/.ssh/id_rsa.pub将 id_rsa.pub 的内容复制到云服务器# 办法一scp ~/.ssh/id_rsa.pub username@ip:~/.ssh/authorized_keys# 办法二(Windows 上不反对)ssh-copy-id -i ~/.ssh/id_rsa.pub username@ip测试ssh -i ~/.ssh/id_rsa username@ip如果不须要输出明码,那咱们就配置 ok 啦。 这里网上很多教程都说,只有输出命令 ssh username@ip就能够无明码登录了,但我试了始终不行,就是得抉择一个密钥文件来登录 配置别名登录编辑 ssh 配置文件 vim ~/.ssh/configHost alias HostName ip/domain User username IdentityFile ~/.ssh/id_rsa网上的教程中先是把 IdentityFile 写成 IdentifyFile 再是把私钥文件写成公钥文件,服了 测试配置好后,输出命令 ssh alias即可登录胜利

September 1, 2022 · 1 min · jiezi

关于ssh:SSH连接服务器后执行多条命令

大家平时有没有遇到本人连贯云服务器,ssh 连贯下来之后,发现自己的一些小工具用不了 例如go build无奈应用 ,因为咱们装置配置golang 环境的时候,是在文件/etc/profile中写了配置,因而须要source 一下/etc/profile 那么是否能够在ssh 连贯上服务器的时候就能够立刻主动执行这一类命令呢? 咱们的智慧无穷无尽,小工具也是十分的多,明天来讲述一下SSH连贯服务器后执行多条命令能够如何做 1 应用分号隔开应用 分号 ;来隔开命令 附带1条命令 ssh User@Host 'source /etc/profile'附带多条命令 ssh User@Host 'source /etc/profile ; uptime'2 应用管道符号隔开应用管道|来隔开命令 附带1条命令 ssh User@Host 'source /etc/profile'附带多条命令 ssh User@Host 'source /etc/profile | uptime'3 应用写EOF的形式同样实用于一条 / 多条命令 ssh User@Host << EOF> ls -al> source /etc/profile> EOF4 应用脚本的形式应用脚本的形式花色就更多了,例如有一个脚本myinit.sh在/home/admin/code/ 上面 myinit.sh #!/bin/bashsource /etc/profilels -al近程连贯服务器 ssh User@Host 'bash -s' < /home/admin/code/myinit.sh以上四种形式,按需索取,很可 以上为本期全部内容,如有疑难能够在评论区或后盾提出你的疑难,咱们一起交换,一起成长。 好家伙要是文章对你还有点作用的话,请帮忙点个关注,分享到你的朋友圈,分享技术,分享高兴 欢-迎点赞,关注,珍藏敌人们,你的反对和激励,是我保持分享,提高质量的能源 好了,本次就到这里 技术是凋谢的,咱们的心态,更应是凋谢的。拥抱变动,背阴而生,致力向前行。 我是小魔童哪吒,欢送点赞关注珍藏,下次见~

August 21, 2022 · 1 min · jiezi

关于ssh:sshkeygen-的-详解

1.敞开防火墙 在内部拜访CentOS中部署利用时,须要敞开防火墙。 敞开防火墙命令:systemctl stop firewalld.service 开启防火墙:systemctl start firewalld.service 敞开开机自启动:systemctl disable firewalld.service 开启开机启动:systemctl enable firewalld.service 2.为了让两个linux机器之间应用ssh不须要用户名和明码。 所以采纳了数字签名RSA或者DSA来实现这个操作。 模型剖析 假如 A (192.168.20.59)为客户机器,B(192.168.20.60)为指标机; 要达到的目标:A机器ssh登录B机器无需输出明码;加密形式选 rsa|dsa均能够,默认dsa ssh-keygen -t rsa #应用rsa加密 二、具体操作流程 单向登陆的操作过程(能满足上边的目标):1、登录A机器 2、ssh-keygen -t [rsa|dsa],将会生成密钥文件和私钥文件 id_rsa,id_rsa.pub或id_dsa,id_dsa.pub3、将 .pub 文件复制到B机器的 .ssh 目录, 并 cat id_dsa.pub >> ~/.ssh/authorized_keys4、功败垂成,从A机器登录B机器的指标账户,不再须要明码了;(间接运行 #ssh 192.168.20.60 ) 双向登陆的操作过程: 1、ssh-keygen做明码验证能够使在向对方机器上ssh ,scp不必应用明码.具体方法如下:2、两个节点都执行操作:#ssh-keygen -t rsa 而后全副回车,采纳默认值. 3、这样生成了一对密钥,寄存在用户目录的~/.ssh下。将公钥考到对方机器的用户目录下 ,并将其复制到~/.ssh/authorized_keys中(操作命令:#cat id_dsa.pub >> ~/.ssh/authorized_keys )。 4、设置文件和目录权限: 设置authorized_keys权限$ chmod 600 authorized_keys 设置.ssh目录权限$ chmod 700 -R .ssh 5、要保障.ssh和authorized_keys都只有用户本人有写权限。否则验证有效。(明天就是遇到这个问题,找了良久问题所在),其实认真想想,这样做是为了不会呈现系统漏洞。 我从20.60去拜访20.59的时候会提醒如下谬误: The authenticity of host '192.168.20.59 (192.168.20.59)' can't be established. RSA key fingerprint is 6a:37:c0:e1:09:a4:29:8d:68:d0:ca:21:20:94:be:18. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added '192.168.20.59' (RSA) to the list of known hosts. root@192.168.20.59's password: Permission denied, please try again. root@192.168.20.59's password: Permission denied, please try again. root@192.168.20.59's password: Permission denied (publickey,gssapi-with-mic,password). ...

August 18, 2022 · 2 min · jiezi

关于ssh:sshkeygen命令详解

为ssh生成、治理和转换认证密钥,ssh-keygen命令 用于为“ssh”生成、治理和转换认证密钥,它反对RSA和DSA两种认证密钥。 SSH 密钥默认保留在 ~/.ssh 目录中。如果没有 ~/.ssh 目录,ssh-keygen命令会应用正确的权限创立一个。 命令语法ssh-keygen [选项] 命令选项-b:指定密钥长度; -e:读取openssh的私钥或者公钥文件; -C:增加正文; -f:指定用来保留密钥的文件名; -i:读取未加密的ssh-v2兼容的私钥/公钥文件,而后在规范输出设备上显示openssh兼容的私钥/公钥; -l:显示公钥文件的指纹数据; -N:提供一个新密语; -P:提供(旧)密语; -q:静默模式; -t:指定要创立的密钥类型。 根本示例以下 ssh-keygen 命令默认在 ~/.ssh 目录中生成 4096 位 SSH RSA 公钥和私钥文件。如果以后地位存在 SSH 密钥对,这些文件将被笼罩。 ssh-keygen -m PEM -t rsa -b 4096应用ssh-kengen会在~/.ssh/目录下生成两个文件,不指定文件名和密钥类型的时候,默认生成的两个文件是id_rsa 第一个是私钥文件 id_rsa.pub 第二个是公钥文件 指定秘钥文件门路 ssh-keygen -t rsa -C 'rumenz@qq.com' -f ~/.ssh/github_id_rsa或者,在指定寄存文件时输出一个新的文件名 Enter file in which to save the key(/Users/rumenz/.ssh/id_rsa):id_rsa_gitlab多个SSH key的治理的状况就须要指定秘钥文件名。参考链接: Create ECDSA Key with ssh keygen command

August 18, 2022 · 1 min · jiezi

关于ssh:SSH介绍和使用SSH-key教程

SSHSSH 为 Secure Shell 的缩写,由 IETF 的网络小组(Network Working Group)所制订。利用 SSH 协定能够无效避免远程管理过程中的信息泄露问题。简略说,SSH是一种网络协议,用于计算机之间的加密登录。 最早的时候,互联网通信都是明文通信,一旦被截获,内容就裸露无疑。1995年,芬兰学者Tatu Ylonen设计了SSH协定,将登录信息全副加密,成为互联网安全的一个根本解决方案,迅速在全世界取得推广,目前曾经成为Linux零碎的标准配置。如果要在Windows零碎中应用SSH,会用到另一种软件PuTTY。 SSH之所以可能保障平安,起因在于它采纳了公钥加密。 过程: (1)近程主机收到用户的登录申请,把本人的公钥发给用户。 (2)用户应用这个公钥,将登录明码加密后,发送回来。 (3)近程主机用本人的私钥,解密登录明码,如果明码正确,就批准用户登录。 中间人攻打与解决办法: 中间人收到近程主机公钥之后,假冒近程主机将伪造的公钥发给用户,用户将很难分别真伪,用户用伪造的公钥加密时会被中间人截获,会呈现安全漏洞。因为不像https协定,SSH协定的公钥是没有证书核心(CA)公证的,也就是说,是本人签发的。解决办法:如果是第一次登录对方主机,零碎会呈现上面的提醒: $ ssh user@host The authenticity of host 'host (12.18.429.21)' can't be established. RSA key fingerprint is 98:2e:d7:e0:de:9f:ac:67:28:c2:42:2d:37:16:58:4d. Are you sure you want to continue connecting (yes/no)? 示意无奈确认host主机的真实性,只晓得它的 公钥指纹是***,承受输出yes?所谓"公钥指纹",是指公钥长度较长(这里采纳RSA(Rivest-Shamir-Adleman始终非对称加密算法),长达1024位),很难比对,所以对其进行MD5计算,将它变成一个128位的指纹。上例中是98:2e:d7:e0:de:9f:ac:67:28:c2:42:2d:37:16:58:4d以简化比照。近程主机必须在本人的网站上贴出公钥指纹,以便用户自行核查。输出yes后,呈现:Warning: Permanently added 'host,12.18.429.21' (RSA) to the list of known hosts. 而后,会要求输出明码。如果明码正确,就能够登录了。当近程主机的公钥被承受当前,它就会被保留在文件$HOME/.ssh/known_hosts之中。下次再连贯这台主机,零碎就会认出它的公钥曾经保留在本地了,从而跳过正告局部,间接提醒输出明码。每个SSH用户都有本人的known_hosts文件,此外零碎也有一个这样的文件,通常是/etc/ssh/ssh_known_hosts,保留一些对所有用户都可信赖的近程主机的公钥。用法SSH次要用于近程登录。假设你要以用户名user,登录近程主机host,只有一条简略命令就能够了。 $ ssh user@host 如果本地用户名与近程用户名统一,登录时能够省略用户名。 $ ssh host SSH的默认端口是22,也就是说,你的登录申请会送进近程主机的22端口。应用p参数,能够批改这个端口。 $ ssh -p 2222 user@host ...

August 18, 2022 · 1 min · jiezi

关于ssh:sshkey是什么

生成SSHKeylinux指令: $ ssh-keygen运行上述命令,一路回车,如果放心私钥的平安问题,能够对私钥设置口令(passphrase)。完结后,再home/.ssh目录下,就会新生成 两个文件,id_rsa.pub和id_rsa, 后面是公钥,前面是私钥。 这时再输出 $ ssh-copy-id user@host #host是要登录的主机名,user是登录时的用户名将公钥送到近程主机host上,当前再登陆就不须要再输出明码了。 好了,从此你再登录,就不须要输出明码了。 如果还是不行,就关上近程主机的/etc/ssh/sshd_config这个文件,查看上面几行后面"#"正文是否取掉。 RSAAuthentication yes PubkeyAuthentication yes AuthorizedKeysFile .ssh/authorized_keys 而后,重启近程主机的ssh服务。 // ubuntu零碎 $ service ssh restart // debian零碎 $ /etc/init.d/ssh restart authorized_keys文件 近程主机将用户的公钥,保留在登录后的用户主目录的$HOME/.ssh/authorized_keys文件中。公钥就是一段字符串,只有把它追加在authorized_keys文件的开端就行了。 这里不应用下面的ssh-copy-id命令,改用上面的命令,解释公钥的保留过程: $ ssh user@host 'mkdir -p .ssh && cat >> .ssh/authorized_keys' < ~/.ssh/id_rsa.pub 这条命令由多个语句组成,顺次合成开来看:(1)"$ ssh user@host",示意登录近程主机;(2)单引号中的mkdir .ssh && cat >> .ssh/authorized_keys,示意登录后在近程shell上执行的命令:(3)"$ mkdir -p .ssh"的作用是,如果用户主目录中的.ssh目录不存在,就创立一个;(4)'cat >> .ssh/authorized_keys' < ~/.ssh/id_rsa.pub的作用是,将本地的公钥文件~/.ssh/id_rsa.pub,重定向追加到近程文件authorized_keys的开端。 写入authorized_keys文件后,公钥登录的设置就实现了。 这个操作也能够间接手动实现,目标就是将本主机的公钥复制到近程主机的.ssh/authorized_keys中。 SSHkey介绍https://zh.wikipedia.org/wiki... Secure Shell(平安外壳协定,简称SSH)是一种加密的网络传输协定,可在不平安的网络中为网络服务提供平安的传输环境[1]。SSH通过在网络中创立平安隧道来实现SSH客户端与服务器之间的连贯[2]。SSH最常见的用处是近程登录零碎,人们通常利用SSH来传输命令行界面和近程执行命令。SSH应用频率最高的场合是类Unix零碎,然而Windows操作系统也能有限度地应用SSH。015年,微软发表将在将来的操作系统中提供原生SSH协定反对[3],Windows 10 1803版本已提供OpenSSH工具[4]。 在设计上,SSH是Telnet和非平安shell的替代品。Telnet和Berkeley rlogin、rsh、rexec等协定采纳明文传输,应用不牢靠的明码,容易受到监听、嗅探和中间人攻打[5]。SSH旨在保障非平安网络环境(例如互联网)中信息加密残缺牢靠。 ...

August 18, 2022 · 1 min · jiezi

关于ssh:SSH文件管理器SSH-Config-Editor-Pro

SSH Config Editor for Mac是一款运行在macOS平台上的SSH配置编辑软件。SSH配置编辑器 Mac能够帮忙用户治理ssh配置文件,如果您的电脑上有ssh配置文件,那么更加须要应用SSH Config Editor for Mac。 SSH文件管理器SSH Config Editor Pro 增加/更改身份文件抉择文件对话框 增加/编辑端口转发的图形帮忙选项 增加/编辑任何反对SSH选项的帮忙 RSA密钥对的生成 分离器进行分组的主机配置 能力禁用单个配置选项 作用生成命令ssh-copy-id 关上连贯到服务器(或从编辑菜单栏图标) known_hosts文件编辑 SSH端口查看 端口敲击性能

August 18, 2022 · 1 min · jiezi

关于ssh:Mac版SSH客户端Termius汉化版

Termius Mac版是实用于macOS, Windows 和Linux的古代SSH 来组织,拜访和连贯到您的服务器。Termius容许您将主机组织成组。组容许您共享设置,但每个主机能够有本人独立的首选项。这些数据以及连贯和命令历史记录能够平安地同步到您的所有设施。Termius应用端到端加密来确保您的数据安全可靠。

August 3, 2022 · 1 min · jiezi

关于ssh:Mac终端SSH工具SecureCRT-923

SecureCRT for Mac实用于Windows,Mac和Linux的 SecureCRT客户端为计算业余人员提供了坚如磐石的终端仿真,通过高级会话治理进步了工作效率,并提供了一系列节省时间和简化重复性工作的办法。SecureCRT为组织中的每个人提供平安的近程拜访,文件传输和数据隧道。无论您是要更换Telnet还是终端,还是须要更弱小的平安近程拜访工具,SecureCRT都是您能够全天应用的应用程序。

August 3, 2022 · 1 min · jiezi

关于ssh:SSH介绍和使用SSH-key教程

SSHSSH 为 Secure Shell 的缩写,由 IETF 的网络小组(Network Working Group)所制订。利用 SSH 协定能够无效避免远程管理过程中的信息泄露问题。简略说,SSH是一种网络协议,用于计算机之间的加密登录。 最早的时候,互联网通信都是明文通信,一旦被截获,内容就裸露无疑。1995年,芬兰学者Tatu Ylonen设计了SSH协定,将登录信息全副加密,成为互联网安全的一个根本解决方案,迅速在全世界取得推广,目前曾经成为Linux零碎的标准配置。如果要在Windows零碎中应用SSH,会用到另一种软件PuTTY。 SSH之所以可能保障平安,起因在于它采纳了公钥加密。 过程: (1)近程主机收到用户的登录申请,把本人的公钥发给用户。 (2)用户应用这个公钥,将登录明码加密后,发送回来。 (3)近程主机用本人的私钥,解密登录明码,如果明码正确,就批准用户登录。 中间人攻打与解决办法: 中间人收到近程主机公钥之后,假冒近程主机将伪造的公钥发给用户,用户将很难分别真伪,用户用伪造的公钥加密时会被中间人截获,会呈现安全漏洞。因为不像https协定,SSH协定的公钥是没有证书核心(CA)公证的,也就是说,是本人签发的。解决办法:如果是第一次登录对方主机,零碎会呈现上面的提醒: $ ssh user@host The authenticity of host 'host (12.18.429.21)' can't be established. RSA key fingerprint is 98:2e:d7:e0:de:9f:ac:67:28:c2:42:2d:37:16:58:4d. Are you sure you want to continue connecting (yes/no)? 示意无奈确认host主机的真实性,只晓得它的 公钥指纹是***,承受输出yes?所谓"公钥指纹",是指公钥长度较长(这里采纳RSA(Rivest-Shamir-Adleman始终非对称加密算法),长达1024位),很难比对,所以对其进行MD5计算,将它变成一个128位的指纹。上例中是98:2e:d7:e0:de:9f:ac:67:28:c2:42:2d:37:16:58:4d以简化比照。近程主机必须在本人的网站上贴出公钥指纹,以便用户自行核查。输出yes后,呈现:Warning: Permanently added 'host,12.18.429.21' (RSA) to the list of known hosts. 而后,会要求输出明码。如果明码正确,就能够登录了。当近程主机的公钥被承受当前,它就会被保留在文件$HOME/.ssh/known_hosts之中。下次再连贯这台主机,零碎就会认出它的公钥曾经保留在本地了,从而跳过正告局部,间接提醒输出明码。每个SSH用户都有本人的known_hosts文件,此外零碎也有一个这样的文件,通常是/etc/ssh/ssh_known_hosts,保留一些对所有用户都可信赖的近程主机的公钥。用法SSH次要用于近程登录。假设你要以用户名user,登录近程主机host,只有一条简略命令就能够了。 $ ssh user@host 如果本地用户名与近程用户名统一,登录时能够省略用户名。 $ ssh host SSH的默认端口是22,也就是说,你的登录申请会送进近程主机的22端口。应用p参数,能够批改这个端口。 $ ssh -p 2222 user@host ...

June 28, 2022 · 1 min · jiezi

关于ssh:SSH-Key的生成和使用

一、查看是否曾经存在ssh key通常sshkey会默认生成在用户家目录下,所以查看家目录下是否存在.ssh 文件夹,以及是否存在相干目录就行。(~/.ssh/id_rsa) 二、生成key在控制台输出:ssh-keygen -t rsaNote: -t 的意思是抉择kye的type。别离有 RSA 和 DSA 两种。具体请自行百度控制台输入如下:Generating public/private rsa key pair.Enter file in which to save the key (/root/.ssh/id_rsa):Created directory ‘/root/.ssh’.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.(为了防止每次进行ssh连贯时都须要输出passphrase,这里能够不必输出passphrase。) 当初你的私钥被放在了~/.ssh/id_rsa 这个文件里,而公钥被放在了 ~/.ssh/id_rsa.pub 这个文件里。 三、应用ssh key应用ssh key的目标是使得两台机器之间建设互信,从其中一台登陆到另一台时不须要明码。具体形式如下: 1、先在主机A上创立密钥对ssh-keygen -t rsa1这时能够在主机A上看到生成的秘钥~/.ssh/id_rsa 和公钥 ~/.ssh/ id_rsa.pub 2、把主机A的公钥放在主机B上scp -r /root/.ssh/id_rsa.pub 192.168.31.147:/root/.ssh/authorized_keys1这里解释下scp命令: 不同的Linux之间copy文件罕用有3种办法: 第一种就是ftp,也就是其中一台Linux装置ftp Server,这样能够另外一台应用ftp的client程序来进行文件的copy。 第二种办法就是采纳samba服务,相似Windows文件copy 的形式来操作,比拟简洁不便。 ...

June 28, 2022 · 1 min · jiezi

关于ssh:sshkey是什么

生成SSHKeylinux指令: $ ssh-keygen运行上述命令,一路回车,如果放心私钥的平安问题,能够对私钥设置口令(passphrase)。完结后,再home/.ssh目录下,就会新生成 两个文件,id_rsa.pub和id_rsa, 后面是公钥,前面是私钥。 这时再输出 $ ssh-copy-id user@host #host是要登录的主机名,user是登录时的用户名将公钥送到近程主机host上,当前再登陆就不须要再输出明码了。 好了,从此你再登录,就不须要输出明码了。 如果还是不行,就关上近程主机的/etc/ssh/sshd_config这个文件,查看上面几行后面"#"正文是否取掉。 RSAAuthentication yes PubkeyAuthentication yes AuthorizedKeysFile .ssh/authorized_keys 而后,重启近程主机的ssh服务。 // ubuntu零碎 $ service ssh restart // debian零碎 $ /etc/init.d/ssh restart authorized_keys文件 近程主机将用户的公钥,保留在登录后的用户主目录的$HOME/.ssh/authorized_keys文件中。公钥就是一段字符串,只有把它追加在authorized_keys文件的开端就行了。 这里不应用下面的ssh-copy-id命令,改用上面的命令,解释公钥的保留过程: $ ssh user@host 'mkdir -p .ssh && cat >> .ssh/authorized_keys' < ~/.ssh/id_rsa.pub 这条命令由多个语句组成,顺次合成开来看:(1)"$ ssh user@host",示意登录近程主机;(2)单引号中的mkdir .ssh && cat >> .ssh/authorized_keys,示意登录后在近程shell上执行的命令:(3)"$ mkdir -p .ssh"的作用是,如果用户主目录中的.ssh目录不存在,就创立一个;(4)'cat >> .ssh/authorized_keys' < ~/.ssh/id_rsa.pub的作用是,将本地的公钥文件~/.ssh/id_rsa.pub,重定向追加到近程文件authorized_keys的开端。 写入authorized_keys文件后,公钥登录的设置就实现了。 这个操作也能够间接手动实现,目标就是将本主机的公钥复制到近程主机的.ssh/authorized_keys中。 SSHkey介绍https://zh.wikipedia.org/wiki... Secure Shell(平安外壳协定,简称SSH)是一种加密的网络传输协定,可在不平安的网络中为网络服务提供平安的传输环境[1]。SSH通过在网络中创立平安隧道来实现SSH客户端与服务器之间的连贯[2]。SSH最常见的用处是近程登录零碎,人们通常利用SSH来传输命令行界面和近程执行命令。SSH应用频率最高的场合是类Unix零碎,然而Windows操作系统也能有限度地应用SSH。015年,微软发表将在将来的操作系统中提供原生SSH协定反对[3],Windows 10 1803版本已提供OpenSSH工具[4]。 在设计上,SSH是Telnet和非平安shell的替代品。Telnet和Berkeley rlogin、rsh、rexec等协定采纳明文传输,应用不牢靠的明码,容易受到监听、嗅探和中间人攻打[5]。SSH旨在保障非平安网络环境(例如互联网)中信息加密残缺牢靠。 ...

June 28, 2022 · 1 min · jiezi

关于ssh:Day-80100-ssh连接提示REMOTE-HOST-IDENTIFICATION-HAS-CHANGED

(一)需要我想连贯近程服务器免密登录和命令行都报错ssh root@ip - p然而有报错,如下: @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!Someone could be eavesdropping on you right now (man-in-the-middle attack)!It is also possible that a host key has just been changed.The fingerprint for the ED25519 key sent by the remote host isSHA256:vdHz3zOlFnQs/O+IkQCmN8FjCUSHJsKgVkD1+7KvmlA.Please contact your system administrator.Add correct host key in /Users/zhaoarden/.ssh/known_hosts to get rid of this message.Offending ED25519 key in /Users/zhaoarden/.ssh/known_hosts:14Host key for 47.93.247.224 has changed and you have requested strict checking.Host key verification failed.(二)剖析SSH会将拜访过的公钥都缓存在(public key);下次访问时,SSH 会核查公钥,如果不对,会报错提醒。免得收到DNS的等攻打; ...

June 9, 2022 · 1 min · jiezi

关于ssh:ssh配置文件config

ssh配置文件有2处: /etc/ssh/ssh_config~/.ssh/config第二处是针对用户级别的,这里编辑的就是它. 示例: Host host00 HostName 12.122.62.77 Port 8088 User smith#近程服务器别名 Host host01 #近程服务器地址 HostName www.gggg.com #近程端口 Port 6061 #近程登录用户名 User git-ted #私钥,必须是绝对路径 IdentityFile ~/.ssh/id_rsa保留. 应用 ssh host00 便能够连贯到域名为 12.122.62.77 的服务器. ssh host01 能够连贯到 www.gggg.com 的服务器. 若想应用 scp,能够这样: scp ./file host00:~/xxx

May 16, 2022 · 1 min · jiezi

关于ssh:端口映射

端口映射背景公网服务器上有些服务实际上没有必要间接裸露在公网端口,比方各种dashboard,因为仅仅是本人查看即可,为了尽量避免端口裸露,从而多大被攻击面,尝试应用ssh端口映射实现跨防火墙的服务拜访SSH端口转发也称作SSH隧道,通过SSH登陆之后,在SSH客户端与SSH服务端之间建设了一个隧道,从而进行通信。SSH隧道是十分平安的,因为SSH是通过加密传输数据的(SSH全称为Secure Shell)分类ssh端口映射可分为三类: 本地端口映射 将发送到本地端口的申请,转发到指标端口,个别用于在本地平安的拜访放在公网服务器的一些私密服务,比方数据库服务,而不必在公网服务器的防火墙中关上该服务的端口近程端口映射 将发送到近程端口的申请,转发到指标端口,个别用于做内网穿透,行将内网中的服务映射到公网服务器的某端口,从而实现从公网拜访内网的服务动静端口映射 可用于迷信,应用近程主机作为proxy,进行申请转发autossh创立SSH隧道实际上应用ssh命令即可,然而该命令创立的隧道服务在网络稳定或者网络断开的状况下就会断开连接,很不稳固,很难用在生产环境,并且其对于SSH隧道的反对也并不欠缺,配置起来绝对繁琐。而autossh命令则是专门为构建SSH隧道构建的,反对对SSH连贯进行监控,反对主动重连,大大晋升SSH隧道的稳定性实例这里以本地端口映射为例进行阐明,如果要实现其余类型的端口映射能够参考下边的链接进行尝试假如这样一个背景: 我有一个dashboard服务部署在腾讯云的公网服务器A,同时在我的内网开发环境中还有一台服务器B。因为该dashboard服务仅仅是本人做监控用的,为了平安期间,没必要在腾讯云的防火墙设置中专门为该dashboard开一个端口进去,所以思考应用SSH端口映射。假如公网服务器A的IP是IP_A,服务器B的IP是IP_B,服务器A的用户名是root,服务器A的SSH服务的端口就是默认的22,目标是要把服务器A上监听在60031这个端口的服务映射到服务器B的50031端口筹备工作对公网服务器A与内网服务器B对立做如下配置: # 编辑文件nano /etc/ssh/sshd_config# 增加下述配置GatewayPorts clientspecified# 重启ssh服务service sshd restart在内网服务器B中创立SSH秘钥对,如果有的话(~/.ssh/文件夹下),就不必创立了,能够间接用,若没有应用ssh-keygen命令创立,随后将服务器B的公钥~/.ssh/id_rsa.pub的内容复制到公网服务器A的authorized_keys文件中(若没有,则创立一个,地位是~/.ssh/authorized_keys)在服务器B上执行ssh root@IP_A -p 22,可能会有对话询问是否将服务器A增加到本地记录当中,键入Y确定即可,如果能胜利的通过SSH连贯到服务器A,则筹备工作结束部署端口映射博主自己比拟喜爱洁净的宿主机环境,因而间接应用Docker部署autossh服务,将该容器部署在服务器B上,实际上该容器将服务器A的端口映射到容器的某个端口,而后又能够通过Docker本身的端口映射,将其映射到宿主机的50031端口,应用的镜像是autossh Docker Image在服务器B上应用Docker Compose构建服务,配置文件autossh.yaml如下: version: '3.7'services: ssh-local-forward: image: jnovack/autossh container_name: autossh-ssh-local-forward environment: - SSH_REMOTE_USER=root - SSH_REMOTE_HOST=IP_A - SSH_REMOTE_PORT=22 - SSH_BIND_IP=0.0.0.0 - SSH_TUNNEL_PORT=50031 - SSH_TARGET_HOST=127.0.0.1 - SSH_TARGET_PORT=60031 - SSH_MODE=-L restart: always ports: - 50031:50031 volumes: - /root/.ssh/id_rsa:/id_rsa替换IP_A的值SSH_BIND_IP指定的实际上是要将服务器A的端口服务映射到服务器B的哪个网络接口上,个别就是0.0.0.0即全副接口SSH_TARGET_HOST指的是将服务器A的哪个网络接口上的服务进行映射,个别是127.0.0.1,可依据场景适时更改留神ports指定了将容器的端口服务最终映射到了宿主机上,这样拜访起来更加不便些volumes指定映射了服务器B上的私钥的地位,如果不是root用户,则灵便更改即可执行docker-compose -f autossh.yaml up -d即可构建SSH隧道,实际上执行的命令是autossh -M 0 -N -o StrictHostKeyChecking=no -o ServerAliveInterval=10 -o ServerAliveCountMax=3 -o ExitOnForwardFailure=yes -t -t -L 0.0.0.0:50031:127.0.0.1:60031 -p 22 root@IP_A此时则能够通过拜访服务器B的50031端口来实现对服务器A上的60031端口的服务进行拜访,而不必再服务器A的防火墙凋谢60031端口其余上面以纯命令行形式介绍其余类型的端口映射,如果要应用Docker,间接参考其DockerHub页面,仿照着来即可本地端口映射接续上边的背景,能够使主机B作为直达,最终实现通过与主机B同一内网的主机C(IP为IP_C)的某端口拜访主机A,只须要做下边的配置(主机B上执行) ...

April 26, 2022 · 1 min · jiezi

关于ssh:本地Linux通过SSH服务连接登录远程Linux服务器

本机Linux通过SSH服务连贯登录近程Linux服务器查看IP: ifconfig 登录: ssh 近程服务器用户名@近程服务器IP 近程服务器启动ssh服务: /etc/init.d/sshd start #其余参数还有stop/status侦听端口(ssh端口个别为22): netstat -na | grep 22 在linux下个别用scp这个命令来通过ssh传输文件从服务器上下载文件 #把 近程服务器IP 上的 /home/cs.txt 的文件下载到 本地/downloadscp 近程服务器用户名@近程服务器IP:/home/cs.txt /download上传本地文件到服务器 #把 本机/download/cs.txt 文件上传到 近程服务器IP 这台服务器上的 /home/template 目录中scp /download/cs.txt 近程服务器用户名@近程服务器IP:/home/template从服务器下载整个文件夹 #把 近程服务器IP 上的 /home/xyz 目录下载到 本地/downloadscp -r 近程服务器用户名@近程服务器IP:/home/xyz /download上传目录到服务器 #把 本地/download/temp 目录上传到服务器的 /home 目录scp -r /download/temp 近程服务器用户名@近程服务器IP:/home

April 11, 2022 · 1 min · jiezi

关于ssh:吐槽Navicat系列1虚假命令行

命令行窗口最大的用处为:应用交互式模式,逐句执行命令,并且逐步返回后果,从而帮忙用户记录多条SQL语句的整个运行过程。Navicat的命令行一次性运行所有命令,一次性返回所有后果,让执行后果的追溯性大打折扣。如下视频展现了HHDBCS和 Navicat命令行的运行比照。【虚伪命令行】视频展现:https://www.bilibili.com/vide... 欢送大家登录https://www.deskui.com,独特参加原创性国产全流程平安运维平台工具建设。

March 14, 2022 · 1 min · jiezi

关于ssh:SSH免密自动连接

1.概述对于Linux操作系统的应用中,SSH的重要性显而易见。但每次登录都要输出简短的用户名@主机IP,而且有时候还会遗记用户名/主机IP,再次翻查记录也是很浪费时间,所以这次咱们就须要配置给服务器的SSH登录进行配置,实现免密登录。 2.配置2.1配置的前提是本地用户机和服务器都有SSH密钥公钥对# Windows下ssh-keygen.exe # 始终按回车即可#Linux下ssh-keygen # 同样始终回车2.2实现后~/.ssh目录下会生成两个文件夹 known_hosts:是已连贯的主机信息id_rsa:私钥(不可外露)id_rsa.pubconfig:SSH配置文件2.3服务器端批改/etc/ssh/sshd_config增加PubkeyAuthentication yes,如果原有的话,勾销正文即可 实现之后,重启ssh服务 /etc/init.d/ssh restart# 有的零碎会是上面的,不影响的,只有能重启SSH服务即可/etc/init.d/sshd restart2.4创立authorized_keys文件a.复制主机的SSH公钥到服务器上scp ~/.ssh/id_rsa.pub user@xx.xx.xx.xx:~/.ssh/authorized_keysb.批改authorized_keys的权限零碎不能让所有者之外的用户对authorized_keys文件有写权限,否则,sshd将不容许应用该文件,因为它可能会被其余用户篡改。所以我须要给authorized_keys更改权限600即可 root@iZuf633xawg78i05qrd9v9Z:~# chmod 600 .ssh/authorized_keys root@iZuf633xawg78i05qrd9v9Z:~# ll .ssh/total 24drwx------ 2 root root 4096 Mar 18 10:58 ./drwx------ 11 root root 4096 Mar 18 10:58 ../-rw------- 1 root root 808 Mar 18 10:58 authorized_keys-rw------- 1 root root 1675 Aug 6 2019 id_rsa-rw-r--r-- 1 root root 410 Aug 6 2019 id_rsa.pub-rw-r--r-- 1 root root 1990 Mar 18 10:53 known_hostsroot@iZuf633xawg78i05qrd9v9Z:~# 2.5免密登录实现之后即可应用ssh user@ip免密登录 ...

February 27, 2022 · 2 min · jiezi

关于ssh:解决使用SSH命令远程连接Linux服务器加载访问慢连接超时断开等问题

一、参考链接阿里巴巴开源镜像站-OPSX镜像站-阿里云开发者社区 【阿里云镜像】应用阿里云openssh镜像装置配置SSH服务_xyb的博客-CSDN博客_openssh 阿里云 SSH登录很慢问题的解决_服务器利用_Linux公社-Linux零碎门户网站 (linuxidc.com) ssh超时(ssh长连贯ClientAliveCountMax) - 陳聽溪 - 博客园 (cnblogs.com) 二、问题形容这段时间应用虚拟机装载了CentOS 7.9版本的Linux操作系统,配置好相干信息参数后,发现应用SSH命令近程连贯拜访服务器,须要期待一会,不能间接按完回车后,立刻跳出输出拜访明码的命令提示符。所以上网搜寻了一下问题。晓得了问题所在。次要是由两个起因造成了。DNS反向解析的问题Gssap认证问题三、解决措施Ⅰ、解决SSH登录慢问题1、查看零碎版本号[root@zabbix-server ~]# cat /etc/redhat-releaseCentOS Linux release 7.9.2009 (Core)2、批改 /etc/ssh/sshd_config 配置文件# vim /etc/ssh/sshd_config批改如下内容:GSSAPIAuthentication no # 敞开认证接口UseDNS no # 敞开DNS解析性能按:wq保留退出。GSSAPI ( Generic Security Services Application Programming Interface) 是一套相似Kerberos 5 的通用网络安全零碎接口。该接口是对各种不同的客户端服务器平安机制的封装,以打消平安接口的不同,升高编程难度。但该接口在指标机器无域名解析时会有问题。零碎是默认开启的,须要手动敞开即可。3、重启SSH服务# systemctl restart sshd# systemctl status sshdⅡ、解决SSH连贯超时断开问题1、批改 /etc/ssh/sshd_config 配置文件ClientAliveInterval 0示意服务器端向客户端申请音讯的工夫距离,默认是0, 不发送。 ClientAliveInterval 60示意每分钟向客户端发送一次,而后客户端响应,这样放弃长时间连贯的状态,SSH近程连接不断开。 ClientAliveCountMax示意服务器发出请求后客户端没有响应的次数达到肯定值,就主动断开。失常状况下,客户端不会不响应。默认即可。 批改内容如下: # vim /etc/ssh/sshd_config批改内容如下:ClientAliveInterval 60ClientAliveCountMax 5按:wq保留退出。ClientAliveInterval n如果n秒之内没有接管到客户端的音讯,就通过加密通道发送一条信息。参见ClientAliveCountMax。默认值为0,意味着不发送音讯。ClientAliveCountMax nn指定sshd从客户端断开连接之前,在没有接管到响应时可能。发送client-alive音讯的条数。参见ClientAliveInterval。默认值为3。2、重启SSH服务# systemctl start redis# systemctl status redisⅢ、SSH连贯测试C:\Users\xybdiy>ssh root@192.168.200.60root@192.168.200.60's password:Last login: Fri Feb 18 13:16:08 2022 from 192.168.200.2[root@zabbix-server ~]#

February 18, 2022 · 1 min · jiezi

关于ssh:Day-29100-本机SSH免密登录到远程

1、服务器端开启密钥登录模式/etc/ssh/sshd_config # 是否容许 root 近程登录PermitRootLogin yes# 明码登录是否关上PasswordAuthentication yes# 开启公钥认证RSAAuthentication yes # 这个参数可能没有 没关系PubkeyAuthentication yes# 寄存登录用户公钥的文件地位# 地位就是登录用户名的家目录下的 .ssh# root 就是 /root/.ssh# foo 就是 /home/foo/.sshAuthorizedKeysFile .ssh/authorized_keysauthorized_keys 是一个文件,不是文件夹# 重启,让配置失效service sshd restart2、用户端创立本人的秘钥对ssh-keygen -t rsa# 如果呈现,已存在,须要笼罩的状况,须要命名别名,免得笼罩其余的配置cd ~/.ssh/# 查看公钥cat id_rsa.pub# 配置登录别名 省去输 ip 麻烦# .ssh/configvi configHost workhost0 # 登录的服务器别名 ssh examp 就能够了 HostName 8.140.130.30 #要登录的服务器ip Port 22 User root #登录名 IdentityFile ~/.ssh/id_rsa #你的私钥门路 ServerAliveInterval 30 TCPKeepAlive yes # 能够配置多个,来反对多个免密登录3、将你的公钥增加至服务器端的公钥凭证把文件中的公钥复制到近程主机的~/.ssh/authorized_keys中,如果没有这个文件,那么请创立一个新的。 authorized_keys 是一个文件,不是文件夹 4、用户端即可免密登录ssh workhost0### 小Tips 1、~ 是在以后用户目录下,Linux是在root文件下(而不是最外层的目录下)2、用VScode 关上近程和本地文件目录,能够省去Vim 操作文件的老本参考链接1、Mac终端配置ssh免密登陆教程https://blog.csdn.net/weixin_... ...

February 18, 2022 · 1 min · jiezi

关于ssh:ssh登陆黑名单

防火墙IP封禁#!/bin/bashDATE=$(date +"%a %b %e %H")#sshd登陆失败防火墙禁用DROP_IP=$(lastb |grep "$DATE" |awk '{a[$3]++}END{for(i in a)if(a[i]>3)print i}')for ip in $DROP_IP; do if [ $(firewall-cmd --list-all |grep drop |grep -c "$ip") -eq 0 ]; then firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="$ip" drop" >> /dev/null firewall-cmd --reload >>/dev/null fidone黑名单封禁#!/bin/bashDATE=$(date +"%a %b %e %H")#sshd登陆失败三次即拉入黑名单DROP_IP=$(lastb |grep "$DATE" |awk '{a[$3]++}END{for(i in a)if(a[i]>3)print i}')for IP in $DROP_IP; do if [ $(cat /etc/hosts.deny |grep -c "$IP") -eq 0 ]; then echo "sshd:$IP:deny" >> /etc/hosts.deny fidone

February 9, 2022 · 1 min · jiezi

关于ssh:服务器安全设置

平安的SSH连贯形式端口协定用户明码密钥对ssh-agent二次认证默认配置文件#设置ssh监听的端口号,默认22端口Port 22#指定监听的地址,默认监听所有;ListenAddress ::ListenAddress 0.0.0.0 #指定反对的SSH协定的版本号。'1'和'2'示意仅仅反对SSH-1和SSH-2协定。#"2,1"示意同时反对SSH-1和SSH-2协定。#Protocol 2,1#HostKey是主机私钥文件的寄存地位;"rsa1"仅用于SSH-1,"dsa"和"rsa"仅用于SSH-2HostKey /etc/ssh/ssh_host_rsa_keyHostKey /etc/ssh/ssh_host_dsa_key#密钥门路HostKey /etc/ssh/ssh_host_ecdsa_keyHostKey /etc/ssh/ssh_host_ed25519_key #是否通过创立非特权子过程解决接入申请的办法来进行权#限分 离。默认值是"yes"。 认证胜利后,将以该认证用户的身份创另一个子过程。这样做的目标是#为了避免通过有缺点的子过程晋升权限,从而使零碎更加平安。UsePrivilegeSeparation yes#在SSH-1协定下,长寿的服务器密钥将以此指令设置的时#间为周期(秒),一直从新生成;这个机制能够尽量减小密钥失落或者黑客攻击造成的损失。设为 0 #示意永不从新生成为 3600(秒)。KeyRegenerationInterval 3600#指定服务器密钥的位数ServerKeyBits 1024#指定 将日志音讯通过哪个日志子系统(facility)发送。有效值是:#DAEMON, USER, AUTH(默认), LOCAL0, LOCAL1, LOCAL2, LOCAL3,LOCAL4, LOCAL5, #LOCAL6, LOCAL7SyslogFacility AUTH#指定日志等级(具体水平)。可用值如下:QUIET, FATAL, ERROR, INFO#(默认), VERBOSE, DEBUG, DEBUG1, DEBUG2, DEBUG3,DEBUG 与 DEBUG1 等价;DEBUG2,# 和 DEBUG3 则别离指定了更具体、更罗嗦的日志输入。比 DEBUG 更具体的日志可能会透露用户# 的敏感信息,因而拥护应用。LogLevel INFO#限度登陆工夫120秒,0示意无限度,登陆失败需期待120sLoginGraceTime 120#是否容许 root 登录#"no"示意禁止。"without-password"#示意禁止应用明码认证登录。"forced-commands-only"#示意只有在指定了 command 选项的状况下才容许应用公钥认证登录,同时其它认证办法全副被禁止。#这个值罕用于做近程备份之类的事件。PermitRootLogin yes 可用值如下:"yes"(默认) 示意容许。#指定是否要求 sshd(8) 在承受连贯申请前对用户主目录和相干的配#置文件 进行宿主和权限查看。强烈建议应用默认值"yes"来预防可能呈现的低级谬误。StrictModes yes#是否容许应用纯 RSA 公钥认证。仅用于SSH-1。默认值是"yes"。RSAAuthentication yes#是否容许公钥认证。仅能够用于SSH-2。默认值为"yes"。PubkeyAuthentication yes#是否勾销应用 ~/.ssh/.rhosts 来做为认证。举荐设为yes。IgnoreRhosts yes#这个选项是专门给 version 1 用的,应用 rhosts 档案在/etc/hosts.equiv配合 RSA 演算形式来进行认证!举荐no。RhostsRSAAuthentication no#这个与下面的我的项目相似,不过是给 version 2 应用的HostbasedAuthentication no#是否在 RhostsRSAAuthentication 或HostbasedAuthentication 过程中疏忽用户的 ~/.ssh/known_hosts 文件。默认值是"no"。为了进步安全性,能够设为"yes"。IgnoreUserKnownHosts no#是否容许明码为空的用户近程登录。默认为"no"。PermitEmptyPasswords no#是否容许质疑-应答(challenge-response)认 #证。默认值是"yes",所有 login.conf中容许的认证形式都被反对。ChallengeResponseAuthentication no# 是否容许应用基于明码的认证。默认为"yes"。PasswordAuthentication yes#是否要求用户为 PasswordAuthentication 提供的明码必须通 过 Kerberos KDC 认证,也就是是否应用Kerberos认证。应用Kerberos认证,服务器须要一个能够校验 KDC identity 的 Kerberos servtab 。默认值是"no"。KerberosAuthentication no#如果应用了 AFS 并且该用户有一个 Kerberos 5 TGT,那么开启该指令后,将会在拜访用户的家目录前尝试获取一个 AFS token 。默认为"no"。KerberosGetAFSToken no #如果 Kerberos 明码认证失败,那么该明码还将要通过其它的 认证机制(比方 /etc/passwd)。默认值为"yes"。KerberosOrLocalPasswd yes#是否在用户退出登录后主动销毁用户的 ticket 。默认"yes"KerberosTicketCleanup yes#是否容许应用基于 GSSAPI 的用户认证。默认值为"no"。仅用 于SSH-2GSSAPIAuthentication no 。#是否在用户退出登录后主动销毁用户凭证缓存。默认值是"yes"。仅用于SSH-2。GSSAPICleanupCredentials yes#是否容许进行 X11 转发。默认值是"no",设为"yes"示意容许。如果#容许X11转发并且sshd代理的显示区被配置为在含有通配符的地址(X11UseLocalhost)上监听。#那么将可能有额定的信息被透露。因为应用X11转发的可能带来的危险,此指令默认值为"no"。需#要留神的是,禁止X11转发并不能禁止用户转发X11通信,因为用户能够装置他们本人的转发器。如#果启用了 UseLogin ,那么X11转发将被主动禁止。X11Forwarding no#指定X11 转发的第一个可用的显示区(display)数字。默认值是 10 。这个能够用于避免 sshd 占用了实在的 X11 服务器显示区,从而产生混同。X11DisplayOffset 10#登陆信息显示例如上次登入的工夫、地点等等,预设是 yes ,然而,如果为了平安,能够思考改为 no !PrintMotd no#指定是否显示最初一位用户的登录工夫。默认值是"yes"PrintLastLog yes#指定零碎是否向客户端发送 TCP keepalive 音讯。默认值是"yes"这种音讯能够检测到死连贯、连贯不当敞开、客户端解体等异样。能够设为"no"敞开这个个性。TCPKeepAlive yes#是否在交互式会话的登录过程中应用 login。默认值是"no"。#如果开启此指令,那么 X11Forwarding 将会被禁止,因为 login 不晓得如何解决 xauth #cookies 。须要留神的是,login是禁止用于近程执行命令的。如果指定了 #UsePrivilegeSeparation ,那么它将在认证实现后被禁用。UseLogin no#最大容许放弃多少个未认证的连贯。默认值是 10 。达到限度后,#将不再承受新连贯,除非先前的连贯认证胜利或超出 LoginGraceTime 的限度。MaxStartups 10#指定每个连贯最大容许的认证次数。默认值是 6 。如果失败认证的次数超过这个数值的一半,连贯将被强制断开,且会生成额定的失败日志音讯。MaxAuthTries 6#指定是否应该对近程主机名进行反向解析,以查看此主机名是否与其IP地址实在对应。UseDNS no#将这个指令指定的文件中的内容在用户进行认证前显示给近程用户。这个个性仅能用于SSH-2,默认什么内容也不显示。"none"示意禁用这个个性。Banner /etc/issue.net Subsystem sftp /usr/lib/openssh/sftp-server #配置一个内部子系统(例如,一个文件#传输守 护过程)。仅用于SSH-2协定。值是一个子系统的名字和对应的命令行(含选项和参数)。#是否应用PAM模块认证UsePAM yes过程#centso#编辑ssh配置文件vim /etc/ssh/sshd_config#RedHat-还须要#没有装置的话须要先装置yum install policycoreutils-python# 增加端口semanage port -a -t ssh_port_t -p tcp 10254# 验证是否增加胜利semanage port -l | grep ssh #Debian系的零碎中间接批改端口就可#批改端口 Port 10254#SSH2协定要比SSH1平安,如果没有就开端增加,近程连贯(须要ssh -2 username@ip) Protocol 2#超时断开 # 以秒为单位,超过60s未操作主动断开 ClientAliveInterval 60 # 如果客户端没有响应则判断一次超时,该参数设置容许超时的次数 ClientAliveCountMax 0#禁止root用户 PermitRootLogin no#指定用户登陆 AllowUsers uesr#禁用特定用户登录 DenyUser testuser#是否容许(空明码)登陆 PermitEmptyPasswords no#是否运行明码的登陆形式,设置为no,须要公钥密钥 PasswordAuthentication no#最大谬误次数,默认最多容许3次明码谬误(须要除2)批改为2则示意若明码输出谬误一次即断开。 MaxAuthTries 6#被动断散会话(秒/分钟)-LoginGraceTime 2m/2s LoginGraceTime 120#具体日志 LogLevel VERBOSE小贴士: ...

January 11, 2022 · 2 min · jiezi

关于ssh:通过ssh一键登录服务器

1.执行ssh-keygen -t rsam生成公私钥对私钥放本地.ssh文件夹下(默认在这个文件夹下, 不须要挪动) 2.公钥放入服务器~.ssh文件夹下的authorized_key文件中, 如果没有就新建此文件 3.重启sshd服务systemctl restart sshd.service 4.在本地.ssh文件夹下新建一个文件名为config的文件, 配置如下 Host 服务器登录名 HostName: 服务器地址 User 登录用户 Port 服务器ssh的port IdentityFile 私钥地址 5.应用ssh bf命令登录服务器ssh配置文件在/etc/ssh/sshd_config目录下, 包含port, AuthorizedKeysFile等

November 1, 2021 · 1 min · jiezi

关于ssh:SSH长连接

服务端,批改/etc/ssh/sshd_config: TCPKeepAlive yesClientAliveInterval 60ClientAliveCountMax 3客户端,批改/etc/ssh/ssh_config: Host *TCPKeepAlive yesServerAliveInterval 30ServerAliveCountMax 5IPQoS lowdelay throughput

October 31, 2021 · 1 min · jiezi

关于ssh:Linux-命令

零碎信息arch 显示机器的处理器架构 uname -m 显示机器的处理器架构 uname -r 显示正在应用的内核版本 dmidecode -q 显示硬件零碎部件 - (SMBIOS / DMI) hdparm -i /dev/hda 列举一个磁盘的架构个性 hdparm -tT /dev/sda 在磁盘上执行测试性读取操作 cat /proc/cpuinfo 显示CPU info的信息 cat /proc/interrupts 显示中断 cat /proc/meminfo 校验内存应用 cat /proc/swaps 显示哪些swap被应用 cat /proc/version 显示内核的版本 cat /proc/net/dev 显示网络适配器及统计 cat /proc/mounts 显示已加载的文件系统 lspci -tv 列举 PCI 设施 lsusb -tv 显示 USB 设施 date 显示零碎日期 cal 2007 显示2007年的日历表 date 041217002007.00 设置日期和工夫 - 月日时候年.秒 clock -w 将工夫批改保留到 BIOS ...

September 11, 2021 · 10 min · jiezi

关于ssh:ssh服务增加端口的方法

Method 1 sshd指令sudo /usr/sbin/sshd -p 12345这样就能够近程的时候应用12345端口进行连贯了。 sshd是ssh的守护过程。 但这样不晓得要如何 Method 2 批改sshd_configvim /etc/ssh/sshd_config增加如下一行: Port 929重启ssh服务: /etc/init.d/ssh restart查看ssh服务监听的端口是否为已设置端口: sudo netstat -tunlp | grep ssh阐明端口曾经关上。能够用ssh进行连贯测试,如果用该端口能够连贯,则ok。否则可能是因为防火墙屏蔽了该端口,则须要防火墙关上该端口。 二、防火墙关上端口: 防火墙过滤规定中减少一条,容许对新增的端口929的拜访: iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 929 -j ACCEPT防火墙规定查看是否失效: iptables --list -n 查看端口是否失效。保留 service iptables save参考sshd命令 – openssh服务器守护过程SSH服务相干常识linux ubuntu 批改ssh端口及常用命令一款短小粗劣的SSH后门剖析

August 11, 2021 · 1 min · jiezi

关于ssh:git使用ssh

步骤ssh-keygen -t rsa -C "xxxxx@xxxxx.com" // 这里的 xxxxx@xxxxx.com 只是生成的 sshkey 的名称进入集体核心->设置->SSH公钥->将生成的公钥增加终端运行ssh -T git@gitee.com/git@github.com通过SSH形式拉去代码

August 3, 2021 · 1 min · jiezi

关于ssh:推荐一个国产的SSH工具FinalShell

FinalShell是一款收费的国产的集SSH工具、服务器治理、远程桌面减速的良心软件,同时反对Windows,macOS,Linux,它不单单是一个SSH工具,残缺的说法应该叫一体化的的服务器,网络管理软件,在很大水平上能够收费代替XShell,是国产中不多见的良心产品,具备收费海内服务器远程桌面减速,ssh减速,双边tcp减速,内网穿透等特色性能 一:装置 1:windows下载地址: http://www.hostbuf.com/downlo... 2:macOS下载地址: http://www.hostbuf.com/downlo... mac版装置门路 /Applications/FinalShell.app/配置文件门路 /Users/$USER/Library/FinalShell/mac版卸载删除装置目录 /Applications/FinalShell.app/ 3:linux装置 一键装置脚本rm -f finalshell_install_linux.sh ;wget www.hostbuf.com/downloads/finalshell_install_linux.sh;chmod +x finalshell_install_linux.sh;./finalshell_install_linux.sh; 装置门路/usr/lib/FinalShell/配置文件门路/home/$USER/.finalshell/ 卸载删除装置目录 /usr/lib/FinalShell/ 二:操作应用 装置后关上软件咱们能够看的操作界面,感觉还是蛮难看的,具体的操作就请各位自行钻研,这里不进行阐明了

July 8, 2021 · 1 min · jiezi

关于ssh:SSH-工具-MobaXterm-的安装和使用

不论应用何种 SSH 工具,最最重要的就是不要应用来路不明的 SSH。 因为你须要在 SSH 中上传服务器的数据,明码等很多敏感信息,服务器的平安比与须要领取 SSH 工具可能的费用来说要重要得多。 MobaXterm 装置 MobaXterm 的官网下载地址为: https://mobaxterm.mobatek.net 界面看起来比拟丑。 在拜访官方网站后单击顶部导航栏中的下载。 在随后的下载界面中有 2 个版本进行抉择。 你能够先抉择应用收费的 Home 版本,如果须要应用业余的话,你须要额定领取 69 美元的费用。 在随后的界面中,会提醒你抉择下载是便携版本还是安装版。 如果你不想装置到你的操作系统下面,那就抉择绿色的便携版就好了。 应用绿色版本惟一不太好的中央就是可能就是你须要本人记住装置的地位,或者你能够在你的桌面下面创立一个快捷链接。 运行 MobaXterm 而后双击运行 MobaXterm,在第一次启动运行的时候会提醒是否容许网络连接。 一般来说须要抉择容许网络连接。 启动运行后的界面请参考下图。 创立会话 在运行界面中能够单击 Session 按钮来创立会话。 在创立会话的时候须要抉择创立会话的类型。 依照提醒输出主机地址,输出用户名而后单击连贯就行。 运行的界面如下: 从运行的界面来看,MobaXterm 可能反对多标签页,同时也可能反对 sftp,这个对你须要对服务器上的配置文件进行一些批改或者测试的话十分不便。 比如说批改 Apache,PHP 的配置文件等。 通过一段时间的试用,感觉还是十分不错,比照 Putty 来说要不便很多。 https://www.ossez.com/t/ssh-m...

May 14, 2021 · 1 min · jiezi

关于ssh:踩坑笔记mac每次重启都需要重新sshadd

问题:mac下解决开机须要每次ssh-add的问题,每次重启电脑后应用Git仓库,都会被提醒:Enter passphrase for key, 而后须要从新去.ssh 执行 ssh-add id_rsa。 起因:生成的秘钥是加密的,如下 图左加密了,图右无加密。问题解决的相应链接 解决:批改明码,把明码设置成无明码 操作后:尝试git胜利。 重启后再试也胜利。 mark一下 仅供参考 欢送更正补充 Thanks

May 13, 2021 · 1 min · jiezi

关于ssh:MIT-计算机教育中缺失的一课-笔记命令行环境

_写在后面:本篇内容来自于 MIT 推出的课程:计算机教育中缺失的一课,这门课程介绍了命令行、弱小的文本编辑器的应用、应用版本控制系统提供的多种个性等等。中文课程主页。 本篇内容为第五节:命令行环境。本节的次要内容如下: 如何同时执行多个不同的过程并追踪它们的状态、如何进行或暂停某个过程以及如何使过程在后盾运行。一些可能改善 shell 及其他工具的工作流的办法,这次要是通过定义别名或基于配置文件对其进行配置来实现的如何应用 SSH 操作远端机器工作管制完结过程Shell 会应用 UNIX 提供的信号机制执行过程间通信。当一个过程接管到信号时,它会进行执行、解决该信号并基于信号传递的信息来扭转其执行。就这一点而言,信号是一种_软件中断_。 当咱们输出 Ctrl-C 时,shell 会发送一个 SIGINT (interrupt program) 信号到过程。另外一个退出程序的信号:SIGQUIT (quit program) ,能够通过 Ctrl-\ 触发。 只管 SIGINT 和 SIGQUIT 都经常用来收回和终止程序相干的申请。SIGTERM 则是一个更加通用的、也更加优雅地退出信号。为了收回这个信号咱们须要应用 kill 命令, 它的语法是: kill -TERM <PID>。 暂停和后盾执行过程在终端中,键入 Ctrl-Z 会让 shell 发送 SIGTSTP 信号。此时,程序被挂起,并没有完结。 应用 jobs 命令,能够查看以后会话中的过程。当程序被挂起时,能够应用 fg 命令,将挂起的程序继续执行,或者应用 bg 命令,将程序放到后盾继续执行。能够通过 jobs 打印后果中的过程标号,来援用某一个过程,如过程标号为 [1],后续能够通过 bg %1 的形式来将该过程在后盾运行,也能够通过 kill %1 的形式杀掉该过程。 执行命令时,在最初增加 & ,能够间接让程序在后盾执行。然而留神,这个过程依然是终端的子过程,所以敞开终端时,这个过程也会被终止(此时发送的信号为 SIGHUP)。为了避免这种状况,能够在程序最前应用 nohup 程序:nohup command command_options,此时关掉终端,程序依然会继续执行。 以下代码演示了这些命令: ...

May 10, 2021 · 5 min · jiezi

关于ssh:卑微前端如何写一个自动部署脚本超简单-一学就会

引言: 小公司的前端个别是怎么部署的呢?是不是在我的项目中npm run build, 而后关上shell工具, 登陆到服务器, 而后把打包后的代码拖到指定的目录下? 如果能够写一个脚本, 而后一行命令就能实现这一系列操作, 那是不是美滋滋? 当然如果你会应用Jenkins, GitLab-Runner + GitLab-CI进行自动化部署的话, 那就另当别论, 本文应用脚本的形式是一种比拟快捷, 轻便, 一看就废的那种, 好了, 废话不多说, 开始入手。第1步:首先关上你的本地的"git bash"或者"终端", 输出ssh-keygen, 生成一个公私钥密钥对, 输出command当前就始终回车回车就行了, 如下图: 第二步:公钥放到服务器上登陆服务器, cd 到 .ssh文件夹上面ls查看有没有"authorized_keys"文件, 如果没有的话, 就新建一个关上"authorized_keys"文件, 而后把生成的公钥体贴重启服务器的ssh服务: 私钥(id_rsa)就放在本地的.ssh文件夹上面不动它就能够了这个时候就能够通过ssh -i ~/.ssh/id_rsa root@192.168.4.2命令连贯到服务器了, 如果你连不上, 这个还有一个小插曲, 就是权限问题 authorized_keys 文件必须是600权限(也就是-rw——-)或者644.ssh目录必须是700权限(也就是drwx——)为了不便辨别私钥文件, 咱们把id_rsa文件名改成deployKey, 而后就能够通过ssh -i ~/.ssh/deployKey root@192.168.4.2连贯到咱们的服务器 编写部署脚本echo "Start build!"npm run build:prodssh -i ~/.ssh/test_deploy_key root@192.168.4.2 "rm -rf /mydata/nginx/html/manage/*"scp -r -i ~/.ssh/bfadmindeploykey ./dist/* root@192.168.4.2:/mydata/nginx/html/manage保留文件名为: deploy.sh 功败垂成, 这时候每次你须要部署的时候, 就间接到我的项目目录下执行 ./dep

May 6, 2021 · 1 min · jiezi

关于ssh:Win10下的最好免费ssh客户端WIndows-Terminal

总述做为一个码农,根本工作就是登录到linux服务器上干活。尽管有VNC可用,但架不住图形界面怎么都不如终端晦涩啊,所以大多数时候还是用ssh登录到服务器在终端下编码,编译,运行。收费的ssh客户端还是有的,之前也用过putty(及各种变种),podarosa, mobaxterm, xshell。之前xshell的免费版是没限度的,xshell是所有ssh客户端中最好用的,所以始终想买个正版反对一下,无奈这货真有点贵,99美刀一年。无意之中有人提了一嘴windows terminal, 这一翻折腾后,发现居然想要的性能居然都不缺,在某些方面应该比xshell还容易定制,要害是能够配置的十分丑陋,齐全不逊于xshell。 装置最不便的形式是从Microsoft Store装置。如果从github release page装置的话,则无奈自动更新 win10曾经内嵌ssh client,无需装置,能够间接应用 启动在搜寻框里间接输出windows terminal就会有相应的app 个性多标签页 (能够通过ctrl+shift+t来关上新的标签页,或通过+旁边的按钮)多面板 alt+shift++: 关上垂直面板alt+shift+-: 关上程度面板alt+shift+D: 关上一个和目前一样的面板可配置字体,配色计划可配置快捷键可设定命令或字符片断配置通过ctrl+,能够关上用户配置文件,json格局 快捷键根本构造就是command和keys "actions": [ // Copy and paste are bound to Ctrl+Shift+C and Ctrl+Shift+V in your defaults.json. // These two lines additionally bind them to Ctrl+C and Ctrl+V. // To learn more about selection, visit https://aka.ms/terminal-selection { "command": { "action": "copy", "singleLine": false }, "keys": "ctrl+c" }, { "command": "paste", "keys": "ctrl+v" }, // Press Ctrl+Shift+F to open the search box { "command": "find", "keys": "ctrl+shift+f" }, { "command": { "action": "switchToTab", "index": 0 }, "keys": "alt+1" }, { "command": { "action": "switchToTab", "index": 1 }, "keys": "alt+2" }, { "command": { "action": "switchToTab", "index": 2 }, "keys": "alt+3" }, { "command": { "action": "switchToTab", "index": 3 }, "keys": "alt+4" }, { "command": { "action": "switchToTab", "index": 4 }, "keys": "alt+5" }, { "command": { "action": "switchToTab", "index": 5 }, "keys": "alt+6" }, { "command": { "action": "switchToTab", "index": 6 }, "keys": "alt+7" }, { "command": { "action": "switchToTab", "index": 7 }, "keys": "alt+8" }, { "command": { "action": "switchToTab", "index": 8 }, "keys": "alt+9" }, { "command": { "action": "closeTab", "index": 100 }, "keys": "ctrl+shift+w" }, { "command": { // use \n for linux "action": "sendInput", "input": "source ~/.uzsh/xlm20.zshrc\n" }, "keys": "ctrl+1" }, { "command": { // use \r for windows "action": "sendInput", "input": "ssh -t harriszh@sw02 \"zsh\"\r" }, "keys": "ctrl+2" }, // Press Alt+Shift+D to open a new pane. // - "split": "auto" makes this pane open in the direction that provides the most surface area. // - "splitMode": "duplicate" makes the new pane use the focused pane's profile. // To learn more about panes, visit https://aka.ms/terminal-panes { "command": { "action": "splitPane", "split": "auto", "splitMode": "duplicate" }, "keys": "alt+shift+d" } ],命令和代码片断如下面所标,有一个非凡的命令是sendInput, 能够通过这个命令来做一个定制化别名 留神在linux下用\n做换行,而在windows下用\r做换行 ...

April 25, 2021 · 3 min · jiezi

关于ssh:windows-子系统中安装-ssh

windows wsl 中装置 ssh上篇文章介绍的是在 windows 如何装置 wsl windows 中关上 wsl 是在 cmd 中输出 bash 命令关上,在 cmd 中操作 wsl 界面切实是有点藕啊,所以筹备应用 Find Shell 工具来链接 wsl 悄咪咪:也能够不装置 ssh,能够应用 Windows Terminal 或者 Cmder 第一步:切换用户首先,将以后用户切换为 root 用户 #切换到 root 用户,而后输出以后用户的明码sudo -i第二步:卸载 ssh装置 ssh 之前先执行下卸载命令,以便装置新版本的 ssh sudo apt-get remove openssh-server第三步:装置 ssh装置 ssh sudo apt-get install openssh-server装置胜利的画面 留神:图中有红框圈进去的局部,如果你的装置实现后没有呈现,那就再执行卸载命令,再次装置,这个是以后机器的密钥,在应用 Find Shell 或 SFTP 连贯时会应用,此处踩过坑,第一次装置没有生成密钥,始终连不上,用了很长时间才发现问题 第四步:配置 ssh_config装置实现 ssh 还不算胜利,还差一个配置文件没有实现呢 #关上 ssh_configsudo vim /etc/ssh/sshd_config#在配置文件中批改如下内容,如果没有可执行增加:Port 2222 #默认的是22,然而windows有本人的ssh服务,也是监听的22端口,这里最好改成大于 1024 的端口PasswordAuthentication yes #应用明码登录AllowUsers youusername # 这里改成你登陆WSL用的用户名,明码也是这个用户的明码#这个配置文件有很多配置项,想要理解的能够百度查看,有国人翻译的中文版本最初:如果有必要能够 wsl 中关上要开启的端口

April 16, 2021 · 1 min · jiezi

关于运维:数栈云MSP运维服务案例某客户生产服务器CPU异常抖动

一、问题背景 某日袋鼠云运维小哥进行例行运维巡检,通过监控视图发现客户应用服务器cpu使用率忽然呈上升趋势。通过专属服务群第一工夫与业务方分割,与业务方确认是否有正在执行的定时工作,或者大范畴拉取账单等业务操作。然而仔细分析了业务日志后,确认过后业务上并没有进行会耗费大量计算资源和网络资源的操作。 二、异常现象 随着时间推移,运维人员收到不同利用零碎主机系统资源占用过高的告警告诉,但客户反馈业务上并没有受到显著影响,且处于业务低峰期。 进一步剖析排查,发现异常实例cpu使用率,负载,网络流量,磁盘IO,TCP连接数都先后呈现回升趋势,景象如下图: CPU使用率:继续10分钟维持在90% 零碎均匀负载:均匀1分钟负载超过25 网络流量:继续10分钟高于日常程度 磁盘IO:每秒写入的字节数迅速回升 TCP 连接数:established连接数继续10分钟回升 三、异样剖析 1) 在排除业务上并没有相干的异样操作后,运维人员进一步剖析了零碎是否有受到内部攻打。通过阿里云云盾平安产品,确认基线查看及流量检测并无异样,业务入口SLB流入流出流量也呈失常趋势,能够排除受到内部攻打的可能。 2) 运维人员登录机器持续排查,连贯服务器间接呈现申请被回绝的状况,提醒connection reset by peer错误信息。 胜利登入机器后发现有大量ssh登入链接。 大量的sshd过程引起cpu占用过高。 四、异样解决 通过上述剖析,与业务方确认ssh 连贯客户端是否为外部零碎IP地址,最终定位异样实例被内网其余机器歹意破解,进行非法拜访入侵。运维人员第一工夫对异样实例进行复原操作,包含敞开已建设的连贯,革除可疑执行程序,批改sshd服务默认端口,重置服务器登录明码,调整平安组拜访策略,查看服务器是否有其它后门等一些列平安加固操作后,主机性能恢复正常。 五、案例总结 从服务器平安防护的角度登程,应将业务部署在云上隔离的网络环境,并批改默认近程服务监听端口,按需凋谢平安组拜访限度。如果业务部署晚期未做相干布局,倡议尽快迁徙经典网络下的服务器到专有网络环境,同时须要定期对服务器进行体检及安全检查,以确保服务器平安。 本文首发于:数栈研习社 数栈是云原生—站式数据中台PaaS,咱们在github上有一个乏味的开源我的项目:FlinkX。FlinkX是一个基于Flink的批流对立的数据同步工具,既能够采集动态的数据,比方MySQL,HDFS等,也能够采集实时变动的数据,比方MySQL binlog,Kafka等,是全域、异构、批流一体的数据同步引擎,大家如果有趣味,欢送来github社区找咱们玩~

April 2, 2021 · 1 min · jiezi

关于ssh:WSLWSL折腾之旅3SSH远程连接

前篇已设置默认为<font color=Red>root</font>用户,故所有命令省略sudo,非root用户需在命令前自行添加sudo1. ssh配置1.1 ssh服务装置Ubuntu20.04子系统自带的ssh服务无奈连贯,需卸载后重新安装。 卸载ssh服务apt remove openssh-server 重装ssh服务apt install openssh-server 1.2 批改配置信息编辑/etc/ssh/sshd_config文件。 (1)批改ssh服务监听端口和监听地址 (2)批改ssh服务容许应用用户名明码形式登入 (4)批改ssh服务容许近程root用户登入 (5)重启ssh服务。 service ssh restart 1.3 设置开机自启在前篇提到的/etc/init.wsl文件中增加service ssh start设置ssh服务开机自启。 2. ssh连贯2.1 本机连贯在Power Shell中通过ssh命令连贯wsl子系统。 ssh root@localhost -p 2222 其中2222为下面设置ssh服务监听端口。 2.2 近程连贯此时通过PC的IP地址是无法访问wsl的,需设置端口转发和防火墙。 (1)查看wsl的地址 装置ifconfig工具apt install net-tools 查看IP地址,红框地位为wsl地址ifconfig (2)将端口转发到wsl,在Power Shell下执行命令,将[IP]和[PORT]替换为wsl的IP和端口。 netsh interface portproxy add v4tov4 listenaddress=0.0.0.0 listenport=2222 connectaddress=[IP] connectport=[PORT] (3)开启防火墙入站规定(也能够在控制面板-Windows Defender 防火墙-高级设置-入站规定中设置) netsh advfirewall firewall add rule name=WSL2 dir=in action=allow protocol=TCP localport=2222 ...

March 9, 2021 · 1 min · jiezi

关于ssh:UCloud全球大促全球31个数据中心29条专线官方补贴1折起云服务器超值特惠898元年

开卖!特价!福利开启! 流动工夫:即日起至2021年3月31日 流动入口:https://www.ucloud.cn/site/active/kuaijie.html 接下来就是官网全解读,别眨眼,盯紧看,别错过任何你须要的云服务~~~ UCloud寰球大促云服务器促销 UCloud寰球大促云服务器促销分新用户促销和新老用户促销,前者限购1台,后者限购10台。新用户辨别集体和企业,当然配置雷同可能价格企业更便宜些。老刘博客这里特地举荐企业新客户北上广机房4核8G内存5M带宽首年898元,集体新客户同此配置首年956元。促销的数据中心包含中国、亚太、美洲、欧洲和非洲地区,具体机房在北京、上海、广州、香港、台北、东京、胡志明市、新加坡、首尔、曼谷、雅加达、马尼拉、孟买、华盛顿、洛杉矶、圣保罗、莫斯科、法兰克福、伦敦、拉各斯(西非尼日利亚)和迪拜。返回流动页>> 留神以上促销均为固定带宽不限流量云服务器,如果须要流量计费/更高带宽/其余配置,多台月付、年付折扣或机柜托管服务,客户分割客服或你的客户经理。在线征询 业余机构测评:Cloudbest(Intel快杰型云服务器): 测试报告次要针对8核16G配置下,四家云厂商的比照剖析。快杰型云服务器在测试中,各项后果均体现突出;在性价比排行上,UCloud占据此次评测第一位。测评详情 UCloud寰球大促寰球必备云产品特惠 当UCloud寰球大促云服务器促销模块抉择中国地区时,流动页面会展现出必备云产品特惠专题。 UCloud寰球大促寰球必备云产品特惠专题下域名、SSL证书、云数据库、云内存、CDN、PathX、高防、UWAF普惠大促,新老用户均可购买,各产品限购1次。值得一提的是.com域名注册首年仅20元,.cn域名注册首年仅10元,付费SSL证书仅30元一年,100G国内CDN流量包仅1元(不限时长应用)。返回流动页>> UCloud寰球大促寰球网络产品特惠 当UCloud寰球大促云服务器促销模块抉择非中国地区,如亚太地区、美洲地区等海内地区时,页面下会展现寰球网络产品特惠专题促销: UCloud寰球大促寰球网络产品特惠专题下精选了寰球网络减速服务,无效晋升跨国、跨洲网络稳定性,各产品特惠限购1次。同时能够扫码进⼊寰球网络减速交换群,理解更多网络减速产品。返回流动页>> GlobalSSH SSH登陆场景、linux/Window实用GlobalSSH:进步跨国远程管理服务器效率,解决因为跨国网络不稳固导致的远程管理呈现的卡顿、连贯失败、传输速度较慢等景象。返回流动页>> 寰球动静减速PathX 寰球动静减速PathX反对非UCloud服务器减速、1分钟部署:提供弹性、稳固、易用、多种协定的寰球网络减速产品,晋升App/网站的寰球拜访品质,躲避跨国网络拥塞导致的响应慢、丢包等问题。单用户仅能支付一次代金券。返回流动页>> 高速通道UDPN 平安稳固、跨域内网减速:通过UCloud的自建专线,提供各个数据中心之间的,低提早、高质量的内网数据传输服务,享受低提早跨域拜访。单用户仅能支付一次代金券。返回流动页>> 此外,流动页上设置了UCloud出海白皮书下载入口,注册UCloud账号,即可收费下载《2021最新出海白皮书》,返回流动页>> UCloud寰球大促U大使举荐返利 成为U大使,推广得返利:举荐新用户应用UCloud,最高30%现金处分。退出UCloud U大使,推广越多,返利越多。须要留神的是以往UCloud的CDN产品是不参加举荐返利的,当初返利规定改版,将CDN流量包预付费减少到返利产品行列中,老刘留神到云计算商家里根本没有针对CDN的常规性返利策略,UCloud首开先河!立刻申请成为U大使退出推广>> UCloud寰球大促更多优惠专场 更多云产品特惠请返回分会场查看: CDN特惠专场,优质自建节点,流量包0.09元/GB起立刻返回 云平安专场,高防服务6折起,多个产品收费试用,一站式等保2.0测评服务省心省力立刻返回 大数据专场,大数据产品收费试用1个月,优惠大促5折起立刻返回 UCloud用户社区积分处分 UCloud在去年底就轻轻推出了自家的社区站点:UCloud用户社区,只是没有大范畴推广,这里UCloud在寰球大促流动页贴出社区,如果用户对他们产品和寰球大促有疑难的,能够间接在他们社区发帖询问。社区反对自行注册账号、微信、GitHub账号或UCloud官网账号登录,且设置了积分获取渠道,肯定积分能够兑换UCloud账号赠金、产品代金券及周边礼品,老刘一个月内曾经用积攒的社区积分兑换了差不多300元赠金,妥妥买了好几个域名~。立刻返回 UCloud用户社区首页 一年一次的福利别错过,各位UCloud的粉丝儿们,买它!买它!买它!

February 3, 2021 · 1 min · jiezi

关于ssh:基于SSH框架实现的鲜花订购系统

我的项目介绍本零碎应用Struts2+Spring+Hibernate架构,数据库应用MySQL,连接池应用c3p0。模拟花礼网进行前端设计与开发,实现网站导航、商品分类展现,商品详情、商品检索、购物车等性能。应用EasyUI实现后盾对商品分类、商品信息、用户信息、订单信息的治理,包含增删改查,文件上传等。我的项目适用人群正在做毕设的学生,或者须要我的项目实战练习的Java学习者 开发环境jdk 8intellij ideatomcat 8.5.40mysql 5.7所用技术Struts2+Spring+Hibernatejs+ajaxeasyUI我的项目架构 我的项目截图注册 首页 商品详情 购物车 治理端-类别治理 治理端-商品治理 治理端-订单治理 数据库配置<!-- c3p0 数据源 --><bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close"> <property name="driverClass" value="com.mysql.jdbc.Driver" /> <property name="jdbcUrl" value="jdbc:mysql://localhost:3306/db_flower?useUnicode=true&amp;characterEncoding=utf8" /> <property name="user" value="root" /> <property name="password" value="root123" /> <!--初始化时获取的连接数,取值应在minPoolSize与maxPoolSize之间。Default: 3 --> <property name="initialPoolSize" value="1" /> <!--连接池中保留的最小连接数。 --> <property name="minPoolSize" value="1" /> <!--连接池中保留的最大连接数。Default: 15 --> <property name="maxPoolSize" value="300" /> <!--最大闲暇工夫,60秒内未应用则连贯被抛弃。若为0则永不抛弃。Default: 0 --> <property name="maxIdleTime" value="60" /> <!--当连接池中的连贯耗尽的时候c3p0一次同时获取的连接数。Default: 3 --> <property name="acquireIncrement" value="5" /> <!--每60秒查看所有连接池中的闲暇连贯。Default: 0 --> <property name="idleConnectionTestPeriod" value="60" /></bean>要害代码分页对象public class PageModel<T> { // 当前页号 private int pageNo = 1; // 每页记录数 private int pageSize = 10; // 总记录数 private int recordCount; // 总页数 private int pageCount; // 寄存分页数据的汇合 private List<T> datas;}struts.xml<struts> <!--应用spring创立治理struts2的action操作 --> <constant name="struts.objectFactory" value="spring" /> <!-- 设置struts2的编码为UTF8 --> <constant name="struts.i18n.encoding" value="UTF-8"></constant> <!-- 不应用浏览器缓存 --> <constant name="struts.serve.static.browserCache" value="false"></constant> <!-- 每次从新加载xml配置文件 --> <constant name="struts.configuration.xml.reload" value="true"></constant> <!-- 启用开发者模式 --> <constant name="struts.devMode" value="true"></constant> <!-- 不应用struts2提供的主题ui --> <constant name="struts.ui.theme" value="simple"></constant> <!-- 提供对通配符的反对 --> <constant name="strutsenableDynamicMethodInvocation" value="true" /> <!-- 须要拦挡未登录用户的包 --> <package name="login" namespace="/" extends="struts-default"> <!-- 配置拦挡未登录用户的拦截器 --> <interceptors> <interceptor name="userInter" class="com.flowershopping.tool.UserInterceptor"></interceptor> <interceptor-stack name="userStack"> <interceptor-ref name="defaultStack"></interceptor-ref> <interceptor-ref name="userInter"></interceptor-ref> </interceptor-stack> </interceptors> <!-- 须要拦挡的action 登记 和 提交订单 --> <!-- 设置默认拦截器 --> <default-interceptor-ref name="userStack"></default-interceptor-ref> <!-- 拦挡后果解决 --> <global-results> <result name="login" type="redirect">/jsp/login/login.jsp</result> </global-results> <!-- 登记 --> <action name="logout" class="userAction" method="logout"> <result name="success">/jsp/index/index.jsp</result> </action> <!-- 提交订单 --> <action name="addOrder" class="ordersAction" method="addOrder"> <result name="success">/jsp/shopping/orderAdded.jsp</result> </action> </package> <!-- 须要进行未登录管理员拦挡的包 --> <package name="admin" namespace="/" extends="struts-default"> <!-- 配置拦挡未登录管理员的拦截器 --> <interceptors> <interceptor name="adminInter" class="com.flowershopping.tool.AdminInterceptor"></interceptor> <interceptor-stack name="adminStack"> <interceptor-ref name="defaultStack"></interceptor-ref> <interceptor-ref name="adminInter"></interceptor-ref> </interceptor-stack> </interceptors> <!-- 须要拦挡的action 查看所有用户 查看订单 增加商品 --> <!-- 设置默认拦截器 --> <default-interceptor-ref name="adminStack"></default-interceptor-ref> <!-- 拦挡后果解决 --> <global-results> <result name="login" type="redirect">/jsp/login/admin.jsp</result> </global-results> <!-- 查看所有用户 --> <action name="findAllUsers" class="userAction" method="findAllUsers"> <result name="success">/jsp/admin/manageUsers.jsp</result> </action> <!-- 查看订单 --> <action name="findAllOrders" class="ordersAction" method="findAllOrders"> <result name="success">/jsp/admin/manageOrders.jsp</result> </action> <!-- 增加商品 --> <action name="addGoods" class="goodsAction" method="addGoods"> </action> </package> <!-- 其余包 --> <package name="default" namespace="/" extends="struts-default,json-default" strict-method-invocation="false"> <global-results> <result name="jsonMap" type="json"> <param name="root">pageMap</param> </result> <result name="stream" type="stream"> <param name="inputName">inputStream</param> </result> </global-results> <!-- 商品分类 --> <action name="category_*" class="categoryAction" method="{1}"> <result name="findCategories_success">/jsp/index/header.jsp</result> </action> <!-- 商品信息 --> <action name="goods_*" class="goodsAction" method="{1}"> <result name="findGoodsByCategory_success">/jsp/index/contentByCategory.jsp</result> <result name="findAllGoods_success">/jsp/index/content.jsp</result> <result name="findOne_success">/jsp/shopping/product.jsp</result> <result name="findGoodsByKey_success">/jsp/shopping/searchResult.jsp</result> <result name="findGoodsByKeys_success">/jsp/shopping/searchResult.jsp</result> </action> <!-- 用户 --> <action name="user_*" class="userAction" method="{1}"> <result name="checkUser_success">/jsp/index/index.jsp</result> <result name="checkUser_error">/jsp/login/login.jsp</result> <result name="checkAdmin_success">/jsp/admin/main.jsp</result> <result name="checkAdmin_error">/jsp/login/admin.jsp</result> <result name="addUser_success">/jsp/index/index.jsp</result> <result name="updateUser_success">/jsp/login/userinfocenter.jsp</result> </action> <!-- 订单 --> <action name="orders_*" class="ordersAction" method="{1}"> <result name="addToCart_success">/jsp/shopping/showCart.jsp</result> <result name="myOrder">/jsp/shopping/myOrder.jsp</result> <result name="updateCart_error">/jsp/shopping/showCartErro.jsp</result> <result name="login" type="redirect">/jsp/login/login.jsp</result> </action> </package></struts>资源下载地址:https://download.csdn.net/dow...程序有问题分割程序帮 ...

January 13, 2021 · 2 min · jiezi

关于ssh:ssh报错

报错信息➜ docSynopsis git:(master) git pull origin master/etc/ssh/ssh_config: line 20: Bad configuration option: gssapikeyexchange/etc/ssh/ssh_config: line 56: Bad configuration option: gssapitrustdns/etc/ssh/ssh_config: line 57: Bad configuration option: gssapikeyexchange/etc/ssh/ssh_config: terminating, 3 bad configuration optionsfatal: Could not read from remote repository.解决方案sudo vim /etc/ssh/ssh_config切换到报错行 间接正文 You are running macOS Sierra (10.14)You have a pre-existing .ssh/config or /etc/ssh/ssh_config file, possibly with a GSSAPIKeyExchange no setting that was previously required for El Capitan (Mac OS 10.11)macOS Sierra中的ssh程序不再反对GSSAPIKeyExchange选项删除或正文掉蕴含GSSAPIKeyExchange的行从新生成ssh公钥 ...

January 11, 2021 · 1 min · jiezi

关于ssh:SSH-免密码免用户名免IP登录云服务器实践

SSH 是 Secure Shell 的缩写,正直地翻译过去能够称作平安外壳协定。咱们能够借助 SSH 协定连贯到近程服务器并实现身份校验操作,也就是说应用了 SSH 密钥进行身份验证能够免去每次都输出明码的繁琐操作,同时账户安全性也失去大幅提高。 以 Centos 为例,SSH 默认寄存在 ~/.ssh 目录下,咱们能够通过 $cd ~/.ssh && ls 组合命令查看目录下寄存的 SSH 密钥文件。如果目录下什么文件都没有代表服务器未生成 SSH 密钥,否则你将会看到相似 id_rsa 和 id_rsa.pub 这样的文件。 生成 SSH 密钥业内工程师通常会应用非对称算法 RSA 来生成一对密钥——公钥和私钥,在终端输出以下命令: ssh-keygen -t rsa -C "vansenb@foxmail.com"参数 -t 和 -C 并非必填项,但咱们能够借助它们来指定生成时候应用的算法(RSA)和集体标识(邮箱)。ssh-keygen 的残缺含意是 ssh key generating,也就是生成 SSH 键(密钥)。输出上方命令并回车,终端会给出如下提醒: Generating public/private rsa key pair.Enter file in which to save the key (/root/.ssh/id_rsa): 第一行是揭示咱们正在生成一对密钥;第二行则是让咱们抉择密钥寄存的文件门路,通常咱们都会抉择应用默认门路,此时不必输出任何门路,间接回车即可;回车后终端给出如下提醒: Enter passphrase (empty for no passphrase): 它提醒咱们输出一串明码短语,这里不输出任何值也不会影响生成后果,间接回车即可;回车后终端给出如下提醒: ...

January 1, 2021 · 2 min · jiezi

关于ssh:集群环境SSH免密访问

批改域名与IP的对应关系(hadoop2和hadoop3同样也须要批改hosts文件) vi /etc/hosts10.2.15.176 hadoop110.2.15.177 hadoop210.2.15.170 hadoop3cd ~/.ssh 进入rsa公钥私钥文件寄存的目录(如果没有.ssh目录,则应用ssh命令连贯一次其余主机就会生成)在 .ssh 目录下输出命令并三次回车就会生成 id_rsa,id_rsa.pub文件 ssh-keygen -t rsa将id_rsa.pub公钥内容拷贝到authorized_keys文件中 cat id_rsa.pub >> authorized_keys依照雷同的形式在另外两台服务器hadoop2, hadoop3生成id_rsa.pub,并把id_rsa.pub拷贝到同一个authorized_keys文件中,拷贝后的authorized_keys: [root@hadoop1 .ssh] more authorized_keysssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC92MPpDY5H4Rnq9AM1QKPFu6dRlLI2oiH/C+eUtDcYM4TQMLV9/Jwk0ffOaWvGIdLYbj/pQ+pZm8i4jWXQ/IDtnC8UlScQqpa5dkzi3yBZTs6/t6Z5+Hbe0s8cXemqxXllVIitg3VQQ8hZOQss5kl/XS4mN51xAfCnuehr1VLOJ3eMjmoIpKtWSzypxaO7GTxHfd/zzZB0fs5u//Sv1uaZKpIHPWCFiNvfxDG4C1mts9LqIf+iQyMrJGCCFxuuIOGvBjqmNDX2dUd7glVCwpiQf2bbw1N7INvfOkwoT33hSn0uICGvK36tQYYh8CAyyuh9CUP+TJu+Mz0M0fcNeJ root@hadoop1.comssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDX8gcUU5M8RURsxBfSzrdMTjXxJAU6UsxLHLxxCa1aiUNrLQyF6QwwZQlmzBpnNjXE9vOtzTfXOAu7m/2YBXDN8tQ4ULFNmKF3xt/lZfeYkSiuJmSxOw/BklOJGhwrEwJIaQV7h28Oqx/o2iHyfSbx6BcBDVzzwiwBlKThb3EM9J3r9dHynvT0ogGb5KpP/o4pi7inhb7PffB5zq4sz1Q726tq9YsS/uG3emJLHj4ovSf4F3FIFPY8mtFuTsIjtuOO2YRTIYyTXd17XqJEVhd+rIYosoLi2oB6U7az2HI00j3f+DgB0wbd9zHaI2h2J88a4RhTnAfSCWaWFZyxn19d root@hadoop2.comssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCn2yYONHHW25rqBX2X4zUD4qHHXzIf1wtWaLEi1FYOOrB46aWZxVMV/UTA+AowvH4RVV9nw0rldmG6PaEyrNvUZW0t7wripRNxGTldpm2nBg692gSgLy+gQH4i4nG/r/nxXL05XmH+zUJT7sLZYea2S/pH2NZpIkThusR6hiDyfqcTCB22MhRlkdgIh1MgMdFoDlk5jN4ezra6MBWcNg1VBP4xp70+NhSwmt1RutN/puNFkpgUjz5gmOT8ZLZ4R4cwM5H8/ZLljB/8aDkQrneUJ9TIVYAyVZOhD3w7NTpJsfulX6ao71PuFSwje0+V2nctPYP6L1litX4S6t5vDgup root@hadoop3.com在hadoop1中受权authorized_keys chmod 600 authorized_keys最初将 authorized_keys 拷贝至hadoop2, hadoop3的.ssh目录下 scp /root/.ssh/authorized_keys hadoop2:/root/.ssh/ scp /root/.ssh/authorized_keys hadoop3:/root/.ssh/测试ssh无明码登录(留神:第一次登录须要明码,之后不再须要) ssh hadoop2exitssh hadoop3exit

September 21, 2020 · 1 min · jiezi

关于ssh:个人学习系列-各工具通过SSH下载代码

最近遇到用http下载代码是空的,所以须要通过ssh进行代码下载的问题,总结一下SourceTree和TortoiseGit两种工具配置密钥的办法。SourceTree1. 生成SSH通过git自带的工具生成SSH就能够了。 2. 将key复制后配置到GitLab(或其余代码管理器中) 3. 在SourceTree中配置key 4. 增加近程仓库克隆/创立-配置源门路和目标门路。留神源门路格局:ssh://git@ip:/xx/xxxxx.git 搞定!!! TortoiseGit1. 生成SSH这里不能应用git自带工具生成SSH了,须要用TortoiseGit自带的工具生成。 2. 下载代码前须要先配置私钥2.1 找到任务栏中的该按钮,点开后增加方才保留的密钥(也可在前面增加)。 2.2 也能够在克隆的时候增加密钥 3. 能够进行代码的克隆操作 4. 进入克隆的我的项目配置密钥如果有就不必配置了哈。 搞定!!! 集体博客地址:http://www.zhouzhaodong.xyz

September 15, 2020 · 1 min · jiezi

关于ssh:SSH-只能用于远程-Linux-主机那说明你见识太小了

起源:DevOps技术栈明天为大家分享一篇对于SSH 的介绍和应用办法的文章。本文从SSH是什么登程,讲述了SSH的根本用法,之后在近程登录、端口转发等多种场景下进行独立的讲述,心愿能对大家有所帮忙。 什么是SSH? SSH是一种网络协议,用于计算机之间的加密登录。最早的时候,互联网通信都是明文通信,一旦被截获,内容就裸露无疑。1995年,芬兰学者Tatu Ylonen设计了SSH协定,将登录信息全副加密,成为互联网安全的一个根本解决方案,迅速在全世界取得推广,目前曾经成为Linux零碎的标准配置。 SSH登录原理 SSH根本用法 语法: ssh -p 22 user@host参数: -p:指定端口号。user:登录的用户名。host:登录的主机。默认的端口号为22,当端口号为22的时候,能够省略,间接应用如下形式: ssh user@host 此外,如果本地正在应用的用户名与近程登录的用户名统一,登录用户名也是能够省略的,即如下: ssh host SSH近程登录实例 当初我有两台linux虚拟机,下面装置都是centOS6.5,ip别离为192.168.13.135和192.168.13.138,如下图: 当初,我须要操作的是通过SSH在192.168.13.138下面,登录到192.168.13.135下面。 首先,咱们能够应用如下命令,查看两台机器是否启用了ssh。 netstat -ntlp |grep ssh 应用如下命令进行连贯。 ssh -p 22 root@192.168.13.135 若在本机上是首次登录该近程主机,则会呈现如下界面。 大抵意思就是,无奈确认host主机的真实性,只晓得它的公钥指纹,问你还想持续连贯吗?输出yes即可。 而后输出明码,即可连贯ok了。 要想退出,间接输出exit即可。 SSH端口转发 SSH 不仅仅可能主动加密和解密 SSH 客户端与服务端之间的网络数据,同时,SSH 还可能提供了一个十分有用的性能,那就是端口转发,行将TCP 端口的网络数据,转发到指定的主机某个端口上,在转发的同时会对数据进行相应的加密及解密。如果工作环境中的防火墙限度了一些网络端口的应用,然而容许 SSH 的连贯,那么也是可能通过应用SSH转发后的端口进行通信。转发,次要分为本地转发与近程转发两种类型。 1.转发的参数 -C:压缩数据 -f :后盾认证用户/明码,通常和-N连用,不必登录到近程主机。 -N :不执行脚本或命令,通常与-f连用。 -g :在-L/-R/-D参数中,容许近程主机连贯到建设的转发的端口,如果不加这个参数,只容许本地主机建设连贯。 -L : 本地端口:指标IP:指标端口 -D : 动静端口转发 -R : 近程端口转发 -T :不调配 TTY 只做代理用 -q :宁静模式,不输入 谬误/正告 信息2.本地转发 ...

September 10, 2020 · 1 min · jiezi

关于ssh:如何建立一个足够安全的SSH连接

1 概述应用SSH连贯服务器是一件很平时的事,然而,连贯是否足够平安是一个令人担忧的问题。本文从如下几个方面介绍了如何建设一个足够平安的SSH连贯: 端口协定用户明码密钥对ssh-agent2 端口第一步就是批改默认端口22,批改/etc/ssh/sshd_config中的Port即可,比方这里批改为1234端口: Port 1234留神这里须要配合SELinu增加端口,否则不能启动sshd服务,在CentOS8中能够通过semanage增加端口,首先查看是否装置policycoreutils-python-utils: rpm -qa | grep policycoreutils-python-utils如果没有装置就应用yum装置: sudo yum install policycoreutils-python-utils接着增加ssh端口: sudo semanage port -m -t ssh_port_t -p tcp 1234查看是否增加胜利: sudo semanage port -l | grep ssh 3 SSH协定SSH2协定要比SSH1平安,因而倡议应用,同样批改配置文件: Protocol 2 # 如果没有就开端增加留神服务器增加Protocol 2后,客户端也须要在/etc/ssh/sshd_config中增加Protocol 2。 4 超时断开批改为60s未操作主动断开: ClientAliveInterval 60 # 以秒为单位,超过60s未操作主动断开ClientAliveCountMax 0 # 如果客户端没有响应则判断一次超时,该参数设置容许超时的次数5 限度用户5.1 禁用Root用户登录PermitRootLogin no5.2 指定用户登录AllowUsers testuser这样只能通过ssh testuser@ip连贯到该服务器。 另外还能够为用户增加指定ip,比方笔者的本机内网ip为192.168.1.7,批改为: AllowUser testuser@192.168.1.7这样其余ip就不能登录了。 5.3 禁用特定用户登录DenyUser testuser禁止通过testuser登录。 相似的配置还有AllowGroups与DenyGroups。 6 明码6.1 禁用(空)明码登录PermitEmptyPasswords noPasswordAuthentication no6.2 谬误次数MaxAuthTries 6默认为最多容许3次明码谬误(须要除2),批改为2则示意如果明码输出谬误一次即主动断开。 ...

August 20, 2020 · 1 min · jiezi

关于ssh:配置SSH密钥实现Git操作时免账号密码登录

1. 配置本地ssh-key在进行Git操作pull request的机器上(大多是本机),生成ssh-key。 1. 1 生成key ssh-keygen$ ssh-keygen -t rsa -C"your_email@youremail.com" 1.2 查看key$ cat ~/.ssh/id_rsa.pub 2. 配置Git服务器的SSH密钥Github,Gitee,GitLab,或者自建的Git仓库服务器。进入集体的配置界面,找到ssh密钥配置,填入上文生成的key并保留。 3. 免登录进行Git操作这时候,能够尝试在生成ssh-key的那一台机器进行Git的命令操作,如clone pull push等操作,此时发现并不需要进行登录。

July 26, 2020 · 1 min · jiezi

关于ssh:配置SSH密钥实现Git操作时免账号密码登录

1. 配置本地ssh-key在进行Git操作pull request的机器上(大多是本机),生成ssh-key。 1. 1 生成key ssh-keygen$ ssh-keygen -t rsa -C"your_email@youremail.com" 1.2 查看key$ cat ~/.ssh/id_rsa.pub 2. 配置Git服务器的SSH密钥Github,Gitee,GitLab,或者自建的Git仓库服务器。进入集体的配置界面,找到ssh密钥配置,填入上文生成的key并保留。 3. 免登录进行Git操作这时候,能够尝试在生成ssh-key的那一台机器进行Git的命令操作,如clone pull push等操作,此时发现并不需要进行登录。

July 26, 2020 · 1 min · jiezi

关于ssh:手把手教你SSH-证书登录教程

来自:阮一峰的网络日志链接:https://tinyurl.com/yc9xrc7tSSH 是服务器登录工具,提供明码登录和密钥登录。 然而,SSH 还有第三种登录办法,那就是证书登录。很多状况下,它是更正当、更平安的登录办法,本文就介绍这种登录办法。 一、非证书登录的毛病明码登录和密钥登录,都有各自的毛病。 明码登录须要输出服务器明码,这十分麻烦,也不平安,存在被暴力破解的危险。 密钥登录须要服务器保留用户的公钥,也须要用户保留服务器公钥的指纹。这对于多用户、多服务器的大型机构很不不便,如果有员工到职,须要将他的公钥从每台服务器删除。 二、证书登录是什么?证书登录就是为了解决下面的毛病而设计的。它引入了一个证书颁发机构(Certificate1 authority,简称 CA),对信赖的服务器颁发服务器证书,对信赖的用户颁发用户证书。 登录时,用户和服务器不须要提前晓得彼此的公钥,只须要替换各自的证书,验证是否可信即可。 证书登录的次要长处有两个:(1)用户和服务器不必替换公钥,这更容易治理,也具备更好的可扩展性。(2)证书能够设置到期工夫,而公钥没有到期工夫。针对不同的状况,能够设置有效期很短的证书,进一步提高安全性。 三、证书登录的流程SSH 证书登录之前,如果还没有证书,须要生成证书。具体方法是:(1)用户和服务器都将本人的公钥,发给 CA;(2)CA 应用服务器公钥,生成服务器证书,发给服务器;(3)CA 应用用户的公钥,生成用户证书,发给用户。 有了证书当前,用户就能够登录服务器了。整个过程都是 SSH 主动解决,用户无感知。 第一步,用户登录服务器时,SSH 主动将用户证书发给服务器。第二步,服务器检查用户证书是否无效,以及是否由可信的 CA 颁发。第三步,SSH 主动将服务器证书发给用户。第四步,用户查看服务器证书是否无效,以及是否由信赖的 CA 颁发。第五步,单方建设连贯,服务器容许用户登录。四、生成 CA 的密钥证书登录的前提是,必须有一个 CA,而 CA 实质上就是一对密钥,跟其余密钥没有不同,CA 就用这对密钥去签发证书。 尽管 CA 能够用同一对明码签发用户证书和服务器证书,然而出于安全性和灵活性,最好用不同的密钥别离签发。所以,CA 至多须要两对密钥,一对是签发用户证书的密钥,假如叫做 user_ca,另一对是签发服务器证书的密钥,假如叫做 host_ca。 应用上面的命令,生成 user_ca。 # 生成 CA 签发用户证书的密钥 $ ssh-keygen -t rsa -b 4096 -f ~/.ssh/user\_ca -C user\_ca下面的命令会在 ~/.ssh 目录生成一对密钥:user_ca(私钥)和 user_ca.pub(公钥)。 这个命令的各个参数含意如下。 -t rsa:指定密钥算法 RSA。-b 4096:指定密钥的位数是4096位。安全性要求不高的场合,这个值能够小一点,然而不应小于1024。-f ~/.ssh/user_ca:指定生成密钥的地位和文件名。-C user_ca:指定密钥的辨认字符串,相当于正文,能够随便设置。应用上面的命令,生成 host_ca。 # 生成 CA 签发服务器证书的密钥$ ssh-keygen -t rsa -b 4096 -f host_ca -C host_ca下面的命令会在~/.ssh目录生成一对密钥:host_ca(私钥)和 host_ca.pub(公钥)。 当初,~/.ssh 目录应该至多有四把密钥。 ~/.ssh/user_ca~/.ssh/user_ca.pub~/.ssh/host_ca~/.ssh/host_ca.pub五、CA 签发服务器证书有了 CA 当前,就能够签发服务器证书了。 签发证书,除了 CA 的密钥以外,还须要服务器的公钥。一般来说,SSH 服务器(通常是sshd)装置时,曾经生成密钥 /etc/ssh/ssh_host_rsa_key 了。如果没有的话,能够用上面`的命令生成。 ...

July 22, 2020 · 2 min · jiezi

ssh-公钥私钥免密登录配置

1、服务器端开启密钥登录模式/etc/ssh/sshd_config # 是否允许 root 远程登录PermitRootLogin yes# 密码登录是否打开PasswordAuthentication yes# 开启公钥认证RSAAuthentication yes # 这个参数可能没有 没关系PubkeyAuthentication yes# 存放登录用户公钥的文件位置# 位置就是登录用户名的家目录下的 .ssh# root 就是 /root/.ssh# foo 就是 /home/foo/.sshAuthorizedKeysFile .ssh/authorized_keysservice sshd restart 2、用户端创建自己的秘钥对ssh-keygen -t rsa -C "your@email.com"cd ~/.ssh/# 查看公钥cat id_rsa.pub# 配置登录别名 省去输 ip 麻烦vi configHost examp # 登录的服务器别名 ssh examp 就可以了 HostName 233.233.233.233 #要登录的服务器ip Port 22 User root #登录名 IdentityFile ~/.ssh/id_rsa #你的私钥路径3、将你的公钥添加至服务器端的公钥凭证echo 你的公钥内容 >> ~/.ssh/authorized_keys4、用户端即可免密登录ssh exmap

July 2, 2020 · 1 min · jiezi

Windows-SSH-免密登录详解

OpenSSHSecure Shell(安全外壳协议,简称SSH)是一种加密的网络传输协议,可在不安全的网络中为网络服务提供安全的传输环境。SSH 基于客户端-服务器体系结构,用户在其中工作的系统是客户端,所管理的远程系统是服务器。 SSH 最常见的用途是远程登录系统,人们通常利用 SSH 来传输命令行界面和远程执行命令。 OpenSSH 是 SSH 工具的开源版本,并且应用广泛。 OpenSSH 包含一系列组件和工具,用于提供一种安全且简单的远程系统管理方法,其中包括: sshd.exe,它是远程所管理的系统上必须运行的 SSH 服务器组件ssh.exe,它是在用户的本地系统上运行的 SSH 客户端组件ssh-keygen.exe,为 SSH 生成、管理和转换身份验证密钥ssh-agent.exe,存储用于公钥身份验证的私钥ssh-add.exe,将私钥添加到服务器允许的列表中,即添加到 ssh-agent 中ssh-keyscan.exe,帮助从许多主机收集公用 SSH 主机密钥sftp.exe,这是提供安全文件传输协议的服务,通过 SSH 运行scp.exe 是在 SSH 上运行的文件复制实用工具以上内容来自 Windows 中的 OpenSSH。 SSH 免密登录从 A 免密登录到 B,【A】表示在 A 上操作,【B】表示在 B 上操作。 A:笔记本电脑B:阿里云机器,IP 为 47.90.100.47终端:Powershell、Command Prompt 或 Git Bash,建议使用管理员身份打开终端,省去某些步骤会要求权限的麻烦。免密登录设置1. 【A】打开终端,生成密钥对。PS C:\Users\Think> cd .\.ssh\PS C:\Users\Think\.ssh> ssh-keygen -t rsa提示输入文件名时: 直接回车将使用默认文件名 id_rsa。如果不止一个密钥对,请输入一个其他文件名,如: id_rsa_aliyun。提示输入密码时: 直接回车,不使用密码(我的选择)。输入密码再回车。2. 【A】将私钥添加到 ssh-agent第 2 步和第 3 步都是可选步骤,但至少要选择一个。 ...

June 30, 2020 · 4 min · jiezi

vnc软件什么是vnc软件远程控制vnc客户端的使用教程

VNC是虚拟网络控制台的缩写。它是一款优秀的远程控制工具软件,远程控制能力强大,高效实用,其性能可以和 Windows中的任何远程控制软件媲美。但是它只能进行单一的用户登录和操控,具有比较大的局限性,对于需要使用大量服务器的使用者来说,还是不够方便。 但可以用iis7服务器管理工具来做为vnc客户端,就能进行多用户的登录和操作,操作不复杂,特别实用。 在熟悉服务器管理工具时,可以参考如下的步骤。 1.打开服务器管理工具软件,然后点击“VNC”;并点击添加,然后输入VNC服务器IP和端口,密码(为必填项),再点击添加,最后点击打开; 2.然后就能看到VNC的使用页面,就能进行相关的操作。

June 17, 2020 · 1 min · jiezi

ssh技巧之跳板机

在管理外网服务器时,出于安全等因素的考虑,我们一般不会把所有服务器都设置成可ssh直连,而是会从中挑选出一台机器作为跳板机,当我们想要连接外网服务器时,我们要先通过ssh登录到跳板机,再从跳板机登录到目标服务器。 下面我们用实验来展示一下跳板机的登录流程。 在该实验中,我们用机器192.168.57.3来代表目标服务器,该服务器不能ssh直连,只能通过跳板机连接,用机器192.168.56.5来代表跳板机,该跳板机可以用ssh直接连接。 为了方便测测试,我们先把我们自己电脑上的ssh的public key拷贝到跳板机及目标机器的.ssh/authorized_keys文件里,这样我们就可以无密码登录了。 下面是测试流程: ssh登录跳板机。$ ssh u3@192.168.56.5Last login: Sun Sep 8 19:51:48 2019 from 192.168.56.1u3@h3:~$从跳板机登录到目标机器。u3@h3:~$ ssh -o "PasswordAuthentication no" u2@192.168.57.3u2@192.168.57.3: Permission denied (publickey,password).该命令中的参数 -o "PasswordAuthentication no" 表示不使用密码登录。 因为我们已经把我们的ssh的public key拷贝到目标机器的.ssh/authorized_keys文件里了,理论上来说,应该是可以登录成功的,但上面的命令却显示登录失败,哪里错了呢? 其实很简单,ssh的key登录是要public key和private key成对存在的,虽然public key已经拷贝到了目标机器,但我们此时是在跳板机上,而跳板机上并没有我们自己机器的private key。 那我们把private key拷贝到跳板机可以不? 不行,因为private key一旦被拷贝到跳板机,那其他能登录到跳板机的人都可以拿到我们呢的private key了,这非常不安全。 那怎么办呢? 这个问题可以通过ssh的agent forwarding来解决,我们先看下具体操作,然后再讲解其工作原理。 我们先退回到自己的机器上,然后执行以下流程: 开启ssh-agent,然后将我们的private key添加到ssh-agent中。➜ ~ eval $(ssh-agent)Agent pid 8350➜ ~ ssh-addIdentity added: /home/yt/.ssh/id_rsa (yt@arch)Identity added: /home/yt/.ssh/id_ed25519 (yt@arch)ssh登录到跳板机(不过此次加上了-A参数,表示开启agent forwarding)。➜ ~ ssh -A u3@192.168.56.5Last login: Sun Sep 8 21:13:01 2019 from 192.168.56.1u3@h3:~$从跳板机登录到目标机器。u3@h3:~$ ssh u2@192.168.57.3Last login: Sun Sep 8 20:45:03 2019 from 192.168.57.4u2@h2:~$由上可见,这次从跳板机登录目标机器是成功了的,原因就是我们开启了agent forwarding,但它是怎么帮助我们从跳板机上登录目标机器的呢? ...

September 8, 2019 · 1 min · jiezi

ssh技巧之端口转发

假设以下场景: 你有台服务器,上面开着个数据库,但该数据库不对外开放,只能通过ssh登录到服务器上才能对其操作,但有时候,你想在本地直接访问该数据库来做些测试,怎么办?假设在公司内网有台服务器,你想在家里直接ssh连到该服务器上,怎么办?这些功能都可以通过ssh的端口转发(port forwarding)来实现。 下面我们通过一些实验来模拟这些场景,看下ssh的端口转发是如何解决这些问题的。 首先看第一个场景,我们先在一台服务器上用ncat命令模拟一个tcp服务,该服务只能在本机访问,不对外开放: u3@h3:~$ ncat -lk 127.0.0.1 9000我们在其他机器上尝试访问下,看是否能连上: $ ncat h3 9000Ncat: Connection refused.如我们预想的一样,其他机器是连不上的。 下面在我们在这台机器开启ssh端口转发,使该机器可以通过ssh隧道的方式来访问服务器上的服务: $ ssh -N -L 127.0.0.1:8000:127.0.0.1:9000 u3@h3执行完该命令后,ssh会建立一个本机到h3服务器的ssh隧道,同时会监听本机的8000端口,当我们的程序访问本机的8000端口时,数据会先通过ssh隧道传到h3服务器的ssh端,h3服务器的ssh端会把数据再传给服务器本机的9000端口。 这样,我们访问本机的8000端口,就相当于访问服务器的9000端口了。 我们来试下: $ ncat localhost 8000hello看下服务端ncat终端的输出: u3@h3:~$ ncat -lk 127.0.0.1 9000hello由上可以看到,在我们访问本地的8000端口,发送hello字符串后,服务端的ncat终端也输出了hello,说明该tcp连接是建立成功的。 至此,场景1的问题完美解决,我们再来看下场景2。 假设h2是一台内网服务器,h3是一台外网服务器,h2和我们家里的机器都可以访问h3,但h3和家里的机器都不能直接访问h2,此时我们想在家里的机器上直接通过ssh登录h2,该功能通过以下步骤可以实现: 建立h2到h3的ssh隧道。u2@h2:~$ ssh -N -R localhost:8022:localhost:22 u3@h3注意,这里使用的参数是-R不是-L,它的意思是,如果在h3上访问8022端口,数据会通过这个ssh隧道转发到h2的22端口,也就是h2的sshd服务端口。 建立家里的机器到h3的ssh隧道。$ ssh -N -L localhost:8022:localhost:8022 u3@h3该命令的意思是,如果我们访问本机的8022端口,数据就会被转发到h3的8022端口上。 通过以上两条命令,我们建立了两条ssh隧道,当我们访问本机的8022端口时,数据会先通过本机到h3的ssh隧道,转发到h3的ssh端,h3的ssh端接着会把数据转发到h3的8022端口,又因为有h2到h3的ssh隧道存在,转发到h3的8022端口的数据又会通过h2到h3的隧道被转发到h2的ssh端,最后h2的ssh端又把数据再转发到h2的22端口,即h2的sshd服务端口。 通过这两条ssh隧道的数据转发,我们就可以在家里的机器上直接访问h2的sshd服务了,试下: $ ssh u2@localhost -p 8022Last login: Fri Sep 6 19:16:20 2019 from 127.0.0.1u2@h2:~$成功! 至此,场景2的问题也完美解决。 以上ssh命令建立的端口转发隧道都是在前台执行的,也就是说,它们会占着终端,终端关闭了它们也会被关闭。 如果想让这些ssh端口转发隧道在后台执行,只要再额外加个 -f 参数就行了。 ...

September 7, 2019 · 1 min · jiezi

SquidSSH-Tunnel实现加密代理

工具和资料QQ群 - Javascript高级爬虫 - 作者自建群,欢迎加入!中国商标网加密接口 - 仅作演示awesome-java-crawler - 作者收集的爬虫相关工具和资料前言今天研究了一下如何在CentOS上部署Squid代理服务器并可加密访问,以前从来没接触过,这里记录一下。具体需求如下: 有两台CentOS服务器,设为A和B基本要求是在服务器A上部署代理服务器,A-B间建立隧道,达到客户端使用B的IP作为代理,最终却通过A代理上网的目的进一步要求,A上的代理仅允许B连接,避免被无处不在的扫描器弄到人家的代理池中A-B间的数据传输应是加密的,即使客户端访问的是普通HTTP页面而非HTTPS页面Squid部署和配置A服务器上安装Squid:yum install squid为了达到绑定B的IP,需要修改配置文件,在/etc/squid/squid.conf,添加两行: acl server_b src <A的外网IP>...http_access allow server_b注意!如果不需要A-B间的加密隧道,仅仅是绑定到B的IP,那么上面配置中acl行后面用B的外网IP即可,但若使用SSH隧道则实际是由本机SSHD转发的,因此这里需要设置成A的外网IP,至于为何不能直接用127.0.0.1,抱歉我也没搞明白(T_T)启动Squid:squid修改配置后重启Squid: squid -k reconfigure这时候可以curl验证一下本机代理是否生效:curl -x localhost:<代理端口> https://httpbin.org/get?showenv=1SSH Tunnel配置在服务器B的shell下执行: ssh -L 0.0.0.0:<B的本地端口>:<服务器A的IP>:<A的代理端口> root@<A的主机名或IP> -N -f注意:执行此条命令需要输入服务器A的root密码命令成功执行后即可建立B到A的加密隧道,注意上面的0.0.0.0不能省略,否则这个隧道只能从B本机访问如果需要关闭隧道,直接杀掉ssh进程即可: 首先用ps -ef | grep <本地端口>找到进程PID然后kill -9 <PID>即可关闭隧道用curl验证代理及隧道是否生效: 在任意电脑上执行:curl -x <B的外网IP>:<B的本地端口> https://httpbin.org/get?showenv=1在上面httpbin的应答中可以看到,虽然指定代理IP为B,但目标站点看到的实际访问IP则是A至此,已初步达到目的 SSH免登陆为了上面的整个流程可以脚本化,还需要实现B到A的SSH免登录首先在B上执行ssh-keygen -t rsa,在后面的交互式界面中不要设定密钥的密码cat /root/.ssh/id_rsa.pub,复制公钥内容在A上编辑/root/.ssh/authorized_keys,把B的公钥文本粘贴到最后,确保独占一行,保存以后在B上执行ssh -L ...命令时,就不需要输入密码了

July 16, 2019 · 1 min · jiezi

git-config配置多用户场景实践

gitgit是一个分布式版本控制软件,最初由林纳斯·托瓦兹创作,于2005年以GPL发布。最初目的是为更好地管理Linux内核开发而设计。应注意的是,这与GNU Interactive Tools(一个类似Norton Commander界面的文件管理器)有所不同。git最初的开发动力来自于BitKeeper和Monotone。git最初只是作为一个可以被其他前端(比如Cogito或Stgit)包装的后端而开发的,但后来git内核已经成熟到可以独立地用作版本控制。很多著名的软件都使用git进行版本控制,其中包括Linux内核、X.Org服务器和OLPC内核等项目的开发流程。更多相关介绍可以查看百科 git的基本使用主要是指一下基本操作: 安装ssh登入配置命令使用安装根据自己的系统进行选择安装方式,可以使用命令行安装,也可以使用安装包安装,git官方安装包地址 ssh登入配置安装完成之后,需要考虑和远程的仓库建立连接,就需要账号和密码,无论是github、gitlab等,都需要一个账户名,可以注册完成,然后设置: git config --global user.name "yourName"git config --global user.email "yourEmail"为了避免每次push代码都需要密码之类的,我们通过ssh来配置;执行: ssh-keygen一路enter即可,在~/.ssh/下会生成两个文件,复制其中的公钥: pbcopy < ~/.ssh/id_rsa.pub进入远程仓库的个人中心,https://github.com/settings/profile;会找到关于SSH and GPG keys,有一个New SSH key的按钮,点击后,可以黏贴上刚复制的公钥,然后Add SSH key即可; 可以pull和push代码测试是否成功。 git命令使用对于win10系统,推荐升级后使用好的官方新出的终端,Windows Terminal,需要当前最新的win10版本,用起来挺好的,可以再Microsoft的官方商城下载体验。对于mac或者linux用户,推荐配置 oh-my-zsh, 这个oh-my-zsh默认安装上了git plugin在~/.zshrc配置文件中,可以使用很多的简洁命令,git简写命令集合多用户配置git-config的官网巨长文档,开发人员经常遇到这样的问题,我们的公司仓库和个人仓库的用户名和邮箱配置是有区别的,为了能够很好地区分工程上传到不同的远程仓库,我们需要分别处理,保证在不同的工程使用不同的账户 按工程配置多用户按目录配置多用户按工程配置多用户目前git的配置变量可以放在三个地方: /etc/gitconfig 系统配置,对所有用户都生效。~/.gitconfig 用户配置,仅对当前用户生效。 git config --global user.name "yourName"git config --global user.email "yourEmail"projectRootPath/.git/config 项目根目录配置,仅对当前项目生效。对应:进入工程根目录执行 git config user.name "yourName"git config user.email "yourEmail"三层是从3-2-1的优先级处理的,这样我们可以对不同工程完成不同的配置,这个在工程数量多的时候简直不忍直视,所以需要寻找更好的方法。 按目录配置多用户在2017年,git新发布的版本2.13.0包含了一个新的功能includeIf配置,可以把匹配的路径使用对应的配置用户名和邮箱; 在~/目录下面存在三个配置文件, .gitconfig // 全局通用配置文件.gitconfig-self // 个人工程配置文件.gitconfig-work // 公司工程配置文件全局通用配置文件~/.gitconfig里面的内容是:主要是通过includeIf配置匹配不用的目录映射到不同配置文件上, [includeIf "gitdir:~/self-workspace/"] path = .gitconfig-self[includeIf "gitdir:~/workspace/"] path = .gitconfig-work个人工程配置文件~/.gitconfig-self: ...

July 10, 2019 · 1 min · jiezi

Mac下SSH免密码连接NAS设置

//原博_20160610 ReadyNas没有ssh简直没法玩,虽然提示开通root的ssh访问网件会拒绝给予支持,还是义无反顾地开了,laf。页面可以选择设置免密登录,并提供了服务器的公钥文件下载,然而一搜,正常配置密钥免密登录都是客户端上传公钥的啊,这下晕了,放狗依然不得其解,只好回归正道。参考mac连接git的配置 复制网友回复如下 使用 ssh-keygen生成密钥对,可忽略过程中密码设置 ssh-keygen查看mac密钥,并复制 vim .ssh/id_rsa.pub密码登录服务器,进入root/.ssh目录,将步骤2中密钥粘贴进authorized_keys文件 vim .ssh/authorized_keysexit登出服务器,再ssh服务器就不用输入密码了,为了安全还可以把密码登陆关闭 vim /etc/ssh/sshd_configPasswordAuthentication no重启ssh参考链接http://www.jianshu.com/p/31cb...http://blog.163.com/likaifeng...http://www.runoob.com/w3cnote... 再仔细研究了一下几个linux的设置教程,想到是不是服务器其实已经生成了一对密钥,应该是把私钥下载到本机上再导入呢,但确实下载下来是个公钥文件啊,可是ReadyNas都这么久了难道还没发现这个bug么。。。

June 13, 2019 · 1 min · jiezi

使用-expect-在必要情况下实现自动输入密码登陆

由于公司的堡垒机必须要用域账号登陆,然后转发密钥,所以每次登陆堡垒机的时候都需要手动输入域账号密码。密码太长且复杂,手动输入容易输错,故使用 expect 写了个脚本来做这个事情,实现免输入密码登陆,工作效率大大提升! 首先我们创建以一个文本文件,我们就命名为 proxy.expect,内容如下: #!/usr/bin/expect# 设置超时时间,单位秒set timeout 10# 主要功能是给ssh运行进程加个壳,用来传递交互指令# ssh -A 是转发密钥设置,用于有堡垒机的场景,一般情况下不需要spawn ssh -A yourname@yourdomain.com# 判断上次输出结果里是否包含 Password: 的字符串,如果有则立即返回,否则就等待一段时间后返回,这里等待时长就是前面设置的 10秒expect "Password:"# 发送密码 \r 表示字符串结束send "yourpassword\r"# 执行完成后保持交互状态,把控制权交给控制台,这个时候就可以手工操作了。# 如果没有这一句登录完成后会退出,而不是留在远程终端上。interact注意一下,这个 proxy.expect 文件里的内容,都是交给 expect 去执行的,而不是 bash,所以第一行的内容是 #!/usr/bin/expect,并且里面的命令如 spawn、expect、send、interact 都是 expect 的命令而不是 bash 命令。 执行命令如下: expect proxy.expect这样就自动登陆了。 当然,也可以自定义一个命令别名,在 .bash_profile 文件里增加一行: alias bb='expect /path/to/proxy.expect'然后 source ~/.bash_profile 使之生效。 以后只需要输入 bb 就可以了自动登陆堡垒机了,完美~ 注意事项无论使用 macOS 自带的 Terminal 还是第三方的 iTerm,我发现使用 expect 自动输入密码会带来一些副作用,比如 top 命令显示出来的效果会出现多余空行、vim 编辑时内容不能全屏、rz/sz 上传下载文件失效等等,做一些复杂的工作的时候,还是不要使用 expect 登录,不然会出现很多意想不到的情况。当然,这些可能是公司堡垒机有关,我自己服务器不会用得到的。 ...

June 13, 2019 · 1 min · jiezi

SSH-本地远程隧道

Last-Modified: 2019年6月5日15:45:11 简介建立ssh隧道常用于, 通过一台公网的主机或者是大家都可以访问的主机做跳转机,来访问内部或者外部不能直接访问的机器. 项目当前用途: 由于服务端上假设架设的redis未设置加密, 因此通过防火墙了屏蔽redis端口(6379), 其他外网机器需要连接到该端口就可以使用ssh隧道建立端口转发绕过防火墙. 参考文章: https://www.cnblogs.com/fbwfb... 个人简单理解: 本地隧道: 访问本地指定端口, 通过"中间机器"转发到"目标机器"的"目标端口", 方向是: 本地 -> 中间 -> 远程远程隧道: 远程访问"远程端口", 通过本机转发到目标机器的端口, 此时本机是作为代理, 远程 -> 本地 -> 目标本地SSH隧道ssh -Nf -L {本地端口}:{目标机器}:{目标端口} {中间机器}# 或ssh -Nf -L {本地地址}:{本地端口}:{目标机器}:{目标端口} {中间机器}# -N 不执行远程指令# -f 后台执行ssh命令# -L local隧道, [bind_address:]port:host:hostport# -4 强制使用ipv4地址若{本地地址}未配置, 则默认为 127.0.0.1, 即只有本机可以访问该转发端口 {目标机器}若填 “127.0.0.1”, 则指的是直接转发到中间机器ssh -f -N -L 36901:127.0.0.1:3690 root@xx.xx.xx.xx 即建立ssh隧道, 本地访问36901端口时, 会被转发到 root@xx.xx.xx.xx的3690端口 {中间机器} 可指定登陆的用户名 {user@xx.xx.xx.xx}示例 目的: A要访问C, 但被B屏蔽 ...

June 5, 2019 · 1 min · jiezi

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

当我试图用如下命令行采用SSH远程登录到运行在CloudFoundry环境下的应用时, cf ssh -N -T -L 9229:127.0.0.1:9229 jerry-demo-server遇到这个错误消息: ssh: unable to authenticate, attempted methods [none password], no supported methods remain https://stackoverflow.com/que... https://pvtl.force.com/s/arti... 使用命令行查看我的这个应用的ssh-enabled标志位: cf ssh-enabled jerry-demo-server发现处于disabled状态: 于是用命令行将这个标志位打开: cf enable-ssh jerry-demo-server cf ssh-enabled jerry-demo-server cf enable-ssh jerry-demo-server 之后重启应用: 问题解决。 要获取更多Jerry的原创文章,请关注公众号"汪子熙":

June 1, 2019 · 1 min · jiezi

Go语言xtermjswebsocket-Web终端堡垒机

1.前言因为公司业务需要在自己的私有云服务器上添加添加WebSsh终端,同时提供输入命令审计功能. 从google上可以了解到xterm.js是一个非常出色的web终端库,包括VSCode很多成熟的产品都使用这个前端库.使用起来也比较简单. 难点是怎么把ssh命令行转换成websocket通讯,来提供Stdin,stdout输出到xterm.js中,接下来就详解技术细节. 全部代码都可以在我的Github.com/dejavuzhou/felix中可以查阅到. 2.知识储备linux下载stdin,stdou和stderr简单概念熟悉Golang官方库golang.org/x/crypto/ssh了解gorilla/websocket的基本用法gin-gonic/gin,当然你也可以使用其他的路由包替代,或者直接使用标准库(前端)websocket(前端)xterm.js3.数据逻辑图Golang堡垒机主要功能就是把SSH协议数据使用websocket协议转发给xterm.js浏览器. 堡垒机Golang服务UML 4.代码实现4.1创建gin Handler func注册gin路由 api.GET("ws/:id", internal.WsSsh) ssh2ws/internal/ws_ssh.go package internalimport ( "bytes" "github.com/dejavuzhou/felix/flx" "github.com/dejavuzhou/felix/models" "github.com/dejavuzhou/felix/utils" "github.com/gin-gonic/gin" "github.com/gorilla/websocket" "github.com/sirupsen/logrus" "net/http" "strconv" "time")var upGrader = websocket.Upgrader{ ReadBufferSize: 1024, WriteBufferSize: 1024 * 1024 * 10, CheckOrigin: func(r *http.Request) bool { return true },}// handle webSocket connection.// first,we establish a ssh connection to ssh server when a webSocket comes;// then we deliver ssh data via ssh connection between browser and ssh server.// That is, read webSocket data from browser (e.g. 'ls' command) and send data to ssh server via ssh connection;// the other hand, read returned ssh data from ssh server and write back to browser via webSocket API.func WsSsh(c *gin.Context) { v, ok := c.Get("user") if !ok { logrus.Error("jwt token can't find auth user") return } userM, ok := v.(*models.User) if !ok { logrus.Error("context user is not a models.User type obj") return } cols, err := strconv.Atoi(c.DefaultQuery("cols", "120")) if wshandleError(c, err) { return } rows, err := strconv.Atoi(c.DefaultQuery("rows", "32")) if wshandleError(c, err) { return } idx, err := parseParamID(c) if wshandleError(c, err) { return } mc, err := models.MachineFind(idx) if wshandleError(c, err) { return } client, err := flx.NewSshClient(mc) if wshandleError(c, err) { return } defer client.Close() startTime := time.Now() ssConn, err := utils.NewSshConn(cols, rows, client) if wshandleError(c, err) { return } defer ssConn.Close() // after configure, the WebSocket is ok. wsConn, err := upGrader.Upgrade(c.Writer, c.Request, nil) if wshandleError(c, err) { return } defer wsConn.Close() quitChan := make(chan bool, 3) var logBuff = new(bytes.Buffer) // most messages are ssh output, not webSocket input go ssConn.ReceiveWsMsg(wsConn, logBuff, quitChan) go ssConn.SendComboOutput(wsConn, quitChan) go ssConn.SessionWait(quitChan) <-quitChan //write logs xtermLog := models.TermLog{ EndTime: time.Now(), StartTime: startTime, UserId: userM.ID, Log: logBuff.String(), MachineId: idx, MachineName: mc.Name, MachineIp: mc.Ip, MachineHost: mc.Host, UserName: userM.Username, } err = xtermLog.Create() if wshandleError(c, err) { return } logrus.Info("websocket finished")}代码详解 ...

May 27, 2019 · 6 min · jiezi

错误记录git-ssh-推送失败的一次记录

0. 问题的来源在完成了项目的开发之后,在把项目推送到 gitlab 仓库时,出现了以下错误提示: GitLab: You are not allowed to push code to this project.fatal: Could not read from remote repository.Please make sure you have the correct access rightsand the repository exists. 1. 问题追踪过程1.1 查看项目角色第一步,因为这个项目不是自己日常维护的,就去查看下自己的角色。 看下是不是重新分配了权限。 结果发现自己是:master 角色 1.2 想着是 sourceTree 工具的配置问题命令行模式下使用 git push 推送,结果是:同样的报错信息 那么就证明确实是自己角色不对了,可明明自己是 master。 1.3 确认自己的推送用户我本身用的是 ssh + id_rsa 提交的网上搜索到一个命令 # 查看推送的用户 ssh -T git@git.workec.com发现 : 显示的是另外一个同事A(吴大神)的名字发现 : 显示的是另外一个同事A(吴大神)的名字发现 : 显示的是另外一个同事A(吴大神)的名字 ...

May 23, 2019 · 1 min · jiezi

Go语言cryptossh执行远程命令

前言远程执行命令有什么用?为什么要远程执行命令? 如果你只有2,3台服务器需要管理的时候,远程执行命令确实没有没多大作用,你可以登录到每台服务器上去完成各种操作。 当你的服务器大于3台的时候,远程执行的命令的方式就可以大大提高你的生产力了。 如果你有一个可以远程执行命令的工具,那么就可以像操作单台机器那样操作多台机器,机器越多,效率提高的越多。 远程执行命令最常用的方法就是利用 SSH 协议,将命令发送到远程机器上执行,并获取返回结果。 代码连接包含了认证,可以使用 password 或者 sshkey 2种方式来认证。下面的示例为了简单,使用了密码认证的方式来完成连接。 package mainimport ( "fmt" "github.com/mitchellh/go-homedir" "golang.org/x/crypto/ssh" "io/ioutil" "log" "time")func main(){ sshHost := "home.xxx.cn" sshUser := "x" sshPassword := "xxxxxx" sshType := "password"//password 或者 key sshKeyPath := ""//ssh id_rsa.id 路径" sshPort := 22 //创建sshp登陆配置 config := &ssh.ClientConfig{ Timeout: time.Second,//ssh 连接time out 时间一秒钟, 如果ssh验证错误 会在一秒内返回 User: sshUser, HostKeyCallback: ssh.InsecureIgnoreHostKey(), //这个可以, 但是不够安全 //HostKeyCallback: hostKeyCallBackFunc(h.Host), } if sshType == "password" { config.Auth = []ssh.AuthMethod{ssh.Password(sshPassword)} } else { config.Auth = []ssh.AuthMethod{publicKeyAuthFunc(sshKeyPath)} } //dial 获取ssh client addr := fmt.Sprintf("%s:%d", sshHost, sshPort) sshClient, err := ssh.Dial("tcp", addr, config) if err != nil { log.Fatal("创建ssh client 失败",err) } defer sshClient.Close() //创建ssh-session session, err := sshClient.NewSession() if err != nil { log.Fatal("创建ssh session 失败",err) } defer session.Close() //执行远程命令 combo,err := session.CombinedOutput("whoami; cd /; ls -al;echo https://github.com/dejavuzhou/felix") if err != nil { log.Fatal("远程执行cmd 失败",err) } log.Println("命令输出:",string(combo))}func publicKeyAuthFunc(kPath string) ssh.AuthMethod { keyPath, err := homedir.Expand(kPath) if err != nil { log.Fatal("find key's home dir failed", err) } key, err := ioutil.ReadFile(keyPath) if err != nil { log.Fatal("ssh key file read failed", err) } // Create the Signer for this private key. signer, err := ssh.ParsePrivateKey(key) if err != nil { log.Fatal("ssh key signer failed", err) } return ssh.PublicKeys(signer)}代码详解1 配置ssh.ClientConfig建议TimeOut自定义一个比较端的时间自定义HostKeyCallback 如果像简便就使用 ssh.InsecureIgnoreHostKey回调, 这种方式不是很安全publicKeyAuthFunc 如果使用key登陆 就需要着用这个函数量读取id_rsa私钥,当然你可以自定义这个访问让他支持字符串2 ssh.Dial创建ssh客户端拼接字符串得到ssh连接地址,同时不要忘记 defer client.Close() ...

May 21, 2019 · 2 min · jiezi

Centos7-SSH远程登录十分缓慢的解决方案

修复登录缓慢的两种方案一、修改ssh配置文件 vim /etc/ssh/sshd_config增加两行记录: UseDNS no GSSAPIAuthentication no二、删除错误登录日志 #路径/var/log

April 29, 2019 · 1 min · jiezi

如何管理多个-Github-账号的-ssh-key

背景通常我们有使用 Github、Gitlab,当 Github 或 Gitlab 下有多个账号,你会发现你的 ssh key 不够用了,因为站点会给你个提示: ssh key already in use github这个时候我们可以采用如下做法 生成多个公钥/私钥对对不同的域名配置不同的私钥实操生成多个公钥/私钥对ssh-keygen -t rsa -C "你的邮箱"用不同的邮箱创建不同的公钥/私钥对 添加私钥ssh-add '私钥路径'ssh-add 提示并将用户的使用的私钥添加到由ssh-agent 维护的列表中. 此后, 当使用公钥连接到远程 SSH 或 SCP 主机时,不再提示相关信息 创建配置文件在 .ssh 目录创建 config 文件,配置如下内容 # gitlab Host git.iboxpay.com HostName git.iboxpay.com PreferredAuthentications publickey IdentityFile ~/.ssh/id_rsa# github Host github2.com HostName github.com PreferredAuthentications publickey IdentityFile ~/.ssh/feygh# github Host github.com HostName github.com PreferredAuthentications publickey IdentityFile ~/.ssh/id_rsa这个配置文件中 Gitlab 下的 ssh 通信都走 id_rsa 公钥加密,所以你在 Gitlab 仓库中要复制 id_rsa 这个公钥过去;值得注意的是,这里有两个 Github 配置,仔细观察下 HostName 都是 github.com,但是 Host 不一样,这就是关键之处。 ...

April 28, 2019 · 1 min · jiezi

如何通过Telnet和SSH远程监控主机

来源 | 愿码(ChainDesk.CN)内容编辑愿码Slogan | 连接每个程序员的故事网站 | http://chaindesk.cn愿码愿景 | 打造全学科IT系统免费课程,助力小白用户、初级工程师0成本免费系统学习、低成本进阶,帮助BAT一线资深工程师成长并利用自身优势创造睡后收入。官方公众号 | 愿码 | 愿码服务号 | 区块链部落免费加入愿码全思维工程师社群 | 任一公众号回复“愿码”两个字获取入群二维码本文阅读时长:13min在本文中,你将学习如何在配置了Telnet和SSH的服务器上执行基本配置。我们将首先使用Telnet模块,之后我们将使用首选方法实现相同的配置:使用Python中的不同模块进行SSH,了解如何telnetlib,subprocess,fabric,Netmiko,和paramiko模块的工作。telnetlib()模块在本节中,我们将了解Telnet协议,然后我们将通过远程服务器上的telnetlib模块执行Telnet操作。Telnet是一种允许用户与远程服务器通信的网络协议。它主要由网络管理员用于远程访问和管理设备。要访问设备,请使用终端中远程服务器的IP地址或主机名运行Telnet命令。Telnet在默认端口号上使用TCP 23。要使用Telnet,请确保它已安装在你的系统上。如果没有,请运行以下命令进行安装:$ sudo apt-get install telnetd要使用简单的终端运行Telnet,您只需输入以下命令:$ telnet ip_address_of_your_remote_serverPython具有telnetlib通过Python脚本执行Telnet功能的模块。在telnet远程设备或路由器之前,请确保它们已正确配置,如果没有,则可以使用路由器终端中的以下命令进行基本配置:configure terminalenable password ‘set_Your_password_to_access_router’username ‘set_username’ password ‘set_password_for_remote_access’line vty 0 4 login local transport input all interface f0/0 ip add ‘set_ip_address_to_the_router’ ‘put_subnet_mask’no shut end show ip interface brief现在,让我们看一下Telnet远程设备的示例。为此,创建一个telnet_example.py脚本并在其中编写以下内容:import telnetlibimport getpassimport sysHOST_IP = “your host ip address"host_user = input(“Enter your telnet username: “)password = getpass.getpass()t = telnetlib.Telnet(HOST_IP)t.read_until(b"Username:")t.write(host_user.encode(“ascii”) + b”\n”)if password:t.read_until(b"Password:")t.write(password.encode(“ascii”) + b”\n")t.write(b"enable\n")t.write(b"enter_remote_device_password\n") #password of your remote devicet.write(b"conf t\n")t.write(b"int loop 1\n")t.write(b"ip add 10.1.1.1 255.255.255.255\n")t.write(b"int loop 2\n")t.write(b"ip add 20.2.2.2 255.255.255.255\n")t.write(b"end\n")t.write(b"exit\n")print(t.read_all().decode(“ascii”) )运行脚本,获得如下输出:student@ubuntu:$ python3 telnet_example.pyOutput:Enter your telnet username: studentPassword:server>enablePassword:server#conf tEnter configuration commands, one per line. End with CNTL/Z.server(config)#int loop 1server(config-if)#ip add 10.1.1.1 255.255.255.255server(config-if)#int loop 23server(config-if)#ip add 20.2.2.2 255.255.255.255server(config-if)#endserver#exit在前面的示例中,我们使用该telnetlib模块访问和配置了Cisco路由器。在此脚本中,首先,我们从用户那里获取用户名和密码,以初始化与远程设备的Telnet连接。建立连接后,我们在远程设备上进行了进一步配置。远程登录后,我们将能够访问远程服务器或设备。但是这个Telnet协议有一个非常重要的缺点,即所有数据,包括用户名和密码,都是以文本方式通过网络发送的,这可能会带来安全风险。因此,如今Telnet很少被使用,并且被称为Secure Shell的非常安全的协议所取代,称为SSH。通过在终端中运行以下命令来安装SSH:$ sudo apt install ssh此外,在用户想要通信的远程服务器上,必须安装并运行SSH服务器。SSH使用TCP协议,22默认使用端口号。您可以ssh通过终端运行 命令,如下所示:$ ssh host_name@host_ip_address现在来学习使用Python中的不同模块来执行SSH,例如subprocess,fabric,Netmiko和Paramiko。现在,我们将逐一看到这些模块。subprocess.Popen()模块此模块的底层的进程创建与管理由 Popen 类处理。它提供了很大的灵活性,因此开发者能够处理未被便利函数覆盖的不常见用例。子程序执行将在新进程中完成。要在Unix / Linux上执行子程序,该类将使用该 os.execvp()函数。要在Windows中执行子程序,该类将使用CreateProcess()函数。现在,让我们看一些有用的参数subprocess.Popen():class subprocess.Popen(args, bufsize=0, executable=None, stdin=None, stdout=None, stderr=None, preexec_fn=None, close_fds=False, shell=False, cwd=None, env=None, universal_newlines=False, startupinfo=None, creationflags=0)让我们看看每个论点:· args: 它可以是一系列程序参数或单个字符串。如果args是序列,则执行args中的第一项。如果args是一个字符串,它建议将args作为序列传递。· shell:shell参数默认设置为False,它指定是否使用shell执行程序。如果是shell True,则建议将args作为字符串传递。在 Linux中,如果shell=True,shell默认为/bin/sh。如果args是字符串,则字符串指定要通过shell执行的命令。· bufsize:如果bufsize是0(默认情况下是0),则表示无缓冲,如果bufsize是1,则表示行缓冲。如果bufsize是任何其他正值,请使用给定大小的缓冲区。如果bufsize是任何其他负值,则表示完全缓冲。· executable:它指定要执行的替换程序。· stdin,, stdout和stderr:这些参数分别定义标准输入,标准输出和标准错误。· preexec_fn: 这被设置为可调用对象,将在子进程中执行子进程之前调用。· close_fds: 在Linux中,如果close_fds是真的,所有的文件描述符,除了0,1和2执行子进程之前,将被关闭。在Windows中,如果close_fds是,true那么子进程将继承没有句柄。· env: 如果值不是None,则映射将为新进程定义环境变量。· universal_newlines: 如果该值True则stdout和stderr将被打开,在新行模式下的文本文件。现在,我们将看到一个例子subprocess.Popen()。为此,创建一个 ssh_using_sub.py 脚本并在其中写入以下内容:import subprocessimport sysHOST=“your host username@host ip"COMMAND= “ls"ssh_obj = subprocess.Popen([“ssh”, “%s” % HOST, COMMAND],shell=False,stdout=subprocess.PIPE,stderr=subprocess.PIPE)result = ssh_obj.stdout.readlines()if result == []:err = ssh_obj.stderr.readlines()print(sys.stderr, “ERROR: %s” % err)else:print(result)运行脚本,您将获得如下输出:student@ubuntu:$ python3 ssh_using_sub.pyOutput :student@192.168.0.106’s password:[b’Desktop\n’, b’Documents\n’, b’Downloads\n’, b’examples.desktop\n’, b’Music\n’, b’Pictures\n’, b’Public\n’, b’sample.py\n’, b’spark\n’, b’spark-2.3.1-bin-hadoop2.7\n’, b’spark-2.3.1-bin-hadoop2.7.tgz\n’, b’ssh\n’, b’Templates\n’, b’test_folder\n’, b’test.txt\n’, b’Untitled1.ipynb\n’, b’Untitled.ipynb\n’, b’Videos\n’, b’work\n’]在前面的示例中,首先,我们导入了子进程模块,然后我们定义了要建立SSH连接的主机地址。之后,我们给出了一个通过远程设备执行的简单命令。完成所有这些后,我们将此信息放在 subprocess.Popen()函数中。此函数执行该函数内定义的参数以创建与远程设备的连接。建立SSH连接后,执行我们定义的命令并提供结果。然后我们在终端上打印SSH的结果,如输出中所示。SSH使用Fabric模块Fabric是一个Python库,也是一个使用SSH的命令行工具。它用于通过网络进行系统管理和应用程序部署。我们也可以通过SSH执行shell命令。要使用结构模块,首先必须使用以下命令安装它:$ pip3 install fabric3现在,我们将看到一个例子。创建一个 fabfile.py脚本并在其中写入以下内容:from fabric.api import *env.hosts=[“host_name@host_ip”]env.password=‘your password’def dir(): run(‘mkdir fabric’) print(‘Directory named fabric has been created on your host network’)def diskspace(): run(‘df’)运行脚本,您将获得如下输出:student@ubuntu:$ fab dirOutput:[student@192.168.0.106] Executing task ‘dir’[student@192.168.0.106] run: mkdir fabric Done.Disconnecting from 192.168.0.106… done.在前面的示例中,首先,我们导入了fabric.api模块,然后设置主机名和密码以与主机网络连接。之后,我们设置了一个不同的任务来执行SSH。因此,为了执行我们的程序而不是Python3 fabfile.py,我们使用了fabutility(fab dir),之后我们声明所需的任务应该从我们的执行fabfile.py。在我们的例子中,我们执行了dir任务,该任务’fabric’在远程网络上创建了一个名称目录。您可以在Python文件中添加特定任务。它可以使用fab结构模块的实用程序执行。SSH使用Paramiko库Paramiko是一个实现SSHv2协议的库,用于与远程设备的安全连接。Paramiko是一个围绕SSH的纯Python界面。在使用Paramiko之前,请确保已在系统上正确安装。如果未安装,可以通过在终端中运行以下命令来安装它:$ sudo pip3 install paramiko现在,我们将看到一个使用示例paramiko。对于此paramiko连接,我们使用的是Cisco设备。Paramiko支持基于密码和基于密钥对的身份验证,以实现与服务器的安全连接。在我们的脚本中,我们使用基于密码的身份验证,这意味着我们检查密码,如果可用,则使用普通用户名/密码身份验证尝试进行身份验证。在我们要对你的远程设备或多层路由器进行SSH连接之前,请确保它们已正确配置,如果没有,可以在多层路由器终端中使用以下命令进行基本配置:configure tip domain-name cciepython.comcrypto key generate rsaHow many bits in the modulus [512]: 1024interface range f0/0 - 1switchport mode accessswitchport access vlan 1no shutint vlan 1ip add ‘set_ip_address_to_the_router’ ‘put_subnet_mask’no shutexitenable password ‘set_Your_password_to_access_router’username ‘set_username’ password ‘set_password_for_remote_access’username ‘username’ privilege 15line vty 0 4login localtransport input allend现在,创建一个pmiko.py脚本并在其中编写以下内容:import paramikoimport timeip_address = “host_ip_address"usr = “host_username"pwd = “host_password"c = paramiko.SSHClient()c.set_missing_host_key_policy(paramiko.AutoAddPolicy())c.connect(hostname=ip_address,username=usr,password=pwd)print(“SSH connection is successfully established with “, ip_address)rc = c.invoke_shell()for n in range (2,6):print(“Creating VLAN " + str(n))rc.send(“vlan database\n”)rc.send(“vlan " + str(n) + “\n”)rc.send(“exit\n”)time.sleep(0.5)time.sleep(1)output = rc.recv(65535)print(output)c.close运行脚本,您将获得如下输出:student@ubuntu:$ python3 pmiko.pyOutput:SSH connection is successfuly established with 192.168.0.70Creating VLAN 2Creating VLAN 3Creating VLAN 4Creating VLAN 5在前面的示例中,首先,我们导入了paramiko模块,然后我们定义了连接远程设备所需的SSH凭据。提供凭证后,我们创建一个实例’c’的paramiko.SSHclient(),它是用于与远程设备建立连接和执行命令或操作主客户端。创建SSHClient对象允许我们使用该.connect()函数建立远程连接。然后,我们设置策略paramiko连接,因为默认情况下, paramiko.SSHclient将SSH策略设置为拒绝策略状态。这会导致策略在没有任何验证的情况下拒绝任何SSH连接。在我们的脚本中,我们忽略了SSH连接丢失的可能性 AutoAddPolicy()在不提示的情况下自动添加服务器主机密钥的功能。我们可以将此策略用于测试目的,但出于安全目的,这在生产环境中不是一个好的选择。建立SSH连接后,你可以在设备上执行所需的任何配置或操作。在这里,我们在远程设备上创建了一些虚拟LAN。创建VLAN后,我们只关闭了连接。SSH使用Netmiko库在本节中,我们将了解Netmiko。Netmiko库是Paramiko的高级版本。这是一个multi_vendor基于Paramiko 的图书馆。Netmiko简化了与网络设备的SSH连接,并对设备进行了特殊操作。在对远程设备或多层路由器进行SSH连接之前,请确保它们已正确配置,如果没有,则可以通过Paramiko部分中提到的命令进行基本配置。现在,让我们看一个例子。创建一个 nmiko.py脚本并在其中编写以下代码:from netmiko import ConnectHandlerremote_device={‘device_type’: ‘cisco_ios’,‘ip’: ‘your remote_device ip address’,‘username’: ‘username’,‘password’: ‘password’,}remote_connection = ConnectHandler(**remote_device)#net_connect.find_prompt()for n in range (2,6):print(“Creating VLAN " + str(n))commands = [’exit’,‘vlan database’,‘vlan ’ + str(n), ’exit’]output = remote_connection.send_config_set(commands)print(output)command = remote_connection.send_command(‘show vlan-switch brief’)print(command)运行脚本,您将获得如下输出:student@ubuntu:~$ python3 nmiko.pyOutput:Creating VLAN 2config termEnter configuration commands, one per line. End with CNTL/Z.server(config)#exitserver #vlan databaseserver (vlan)#vlan 2VLAN 2 modified:server (vlan)#exitAPPLY completed.Exiting….server #……..switch#Creating VLAN 5config termEnter configuration commands, one per line. End with CNTL/Z.server (config)#exitserver #vlan databaseserver (vlan)#vlan 5VLAN 5 modified:server (vlan)#exitAPPLY completed.Exiting….VLAN Name Status Ports—- ——————————– ——— ——————————-1 default active Fa0/0, Fa0/1, Fa0/2, Fa0/3, Fa0/4, Fa0/5, Fa0/6, Fa0/7, Fa0/8, Fa0/9, Fa0/10, Fa0/11, Fa0/12, Fa0/13, Fa0/14, Fa0/152 VLAN0002 active 3 VLAN0003 active 4 VLAN0004 active 5 VLAN0005 active 1002 fddi-default active 1003 token-ring-default active 1004 fddinet-default active 1005 trnet-default active在前面的示例中,我们使用Netmiko库来执行SSH,而不是Paramiko。在这个脚本中,首先,我们ConnectHandler从Netmiko库导入,我们通过传入设备字典来建立与远程网络设备的SSH连接。在我们的例子中,那个词典是remote_device。建立连接后,我们执行配置命令以使用该send_config_set()功能创建多个虚拟LAN 。当我们使用这种类型.send_config_set()的函数来传递远程设备上的命令时,它会自动将我们的设备设置为配置模式。发送配置命令后,我们还传递了一个简单的命令来获取有关已配置设备的信息。 ...

April 11, 2019 · 3 min · jiezi

500 Internal Privoxy Error(连接ss服务报错)

搜索了一大圈没找到到答案,最终通过重启ss所在的服务器解决。过程如下在服务器查看ss服务的端口的使用情况,发现大量tcp半连接状态(SYN_RECV),因为刚刚尝试连接网络失败百度得出两种可能:1、一种是客户端没有收到服务器发送的[SYN,ACK]包尝试ping客户端ip,成功,排除这种可能2、另一种可能是对方收到了[SYN,ACK]包却没有ACK,这种情况又分为两种可能1.一种是对方根本就不打算ACK,一般在对方程序有意为之才会出现,如SYN Flood类型的DOS/DDOS攻击;(排除)2.一种可能是对方收到的[SYN,ACK]包不合法,常见的是SYN包的目的地址(服务地址)和应答[SYN,ACK]包的源地址不同。这种情况在只配置了DNAT而不进行SNAT的服务网络环境下容易出现,主要是由于inbound(SYN包)和outbound([SYN,ACK]包)的包穿越了不同的网关/防火墙/负载均衡器,从而导致[SYN,ACK]路由到互联网的源地址(一般是防火墙的出口地址)与SYN包的目的地址(服务的虚拟IP)不同,这时客户机无法将SYN包和[SYN,ACK]包关联在一起,从而会认为已发出的SYN包还没有被应答,于是继续等待应答包。这样服务器端的连接一直保持在SYN_RCVD状态(半开连接)直到超时。………………超出现有知识能解决的范围,干脆重启ss服务所在服务器实例启动ss服务,发现ip更换,重新配置ss客户端连接googlebingo!连接成功

March 1, 2019 · 1 min · jiezi

linux上ssh免密登录原理及实现

因为我的服务器集群需要回收日志到中央进行统一处理,所以需要建立ssh互信关系实现免密登录。关于ssh的使用大家可能都很熟悉了,我们今天主要来讲下ssh连接和免密登录的原理。scp 传输文件scp(secure copy)是linux系统下基于ssh登录进行安全的远程文件拷贝的命令。# 传递文件到远程scp local_file remote_username@remote_ip:remote_file# 传递文件夹到远程scp -r local_folder remote_username@remote_ip:remote_folder # 复制远程文件到本地,只是调换下文件参数位置即可scp remote_username@remote_ip:remote_file local_file远程拷贝的命令还有rsync,scp消耗资源少,不会提高多少系统负荷,在这一点上,rsync就远远不及它了。rsync比scp会快一点,但当小文件多的情况下,rsync会导致硬盘I/O非常高,而scp基本不影响系统正常使用。与scp相似的命令是cp,但是cp只能本机拷贝而不能跨服务器,因此需要与ssh合作构成scp命令。我们直接使用scp来跨机器拷贝文件,会提示输入密码:# 提示输入server端服务器的work用户密码[work@client.com ~]$ scp test.php work@server.com:/home/workwork@server.com’s password: 原因就在于,scp是先使用ssh连接服务端机器后,再使用网络来执行远程拷贝(cp)。可以参考ssh的过程:# 同样的提示输入server端服务器的work用户密码[work@client.com ]$ ssh work@server.comwork@server.com’s password: ssh 加密信息Secure Shell(安全外壳协议,简称SSH)是一种加密的网络传输协议,可在不安全的网络中为网络服务提供安全的传输环境。SSH通过在网络中创建安全隧道来实现SSH客户端与服务器之间的连接。虽然任何网络服务都可以通过SSH实现安全传输,SSH最常见的用途是远程登录系统,人们通常利用SSH来传输命令行界面和远程执行命令。SSH是Telnet/rlogin等非安全shell的替代品,这些协议采用明文传输,会引入许多的安全性问题:如图所示,telnet使用23号端口,所有的信息,包括用户名和密码都是明文传输;而ssh使用22号端口,所有的信息都会被加密传输,安全性得到了很大的提高。ssh使用十分简单,选择以什么用户连接哪台机器,然后输入密码即可:$ssh user@hostnameuser@hostname’s password:对称加密和非对称加密ssh的主要有点就是安全性,安全性依赖于加密方式,现在主要的加密方式有两种:对称加密和非对称加密。对称加密对称加密使用同一个密钥来进行加密和解密,这样在传输时是安全可靠的,但是如何安全的保存密钥呢,在集群中,客户端的数量巨大,一旦任意一个客户端的密钥被窃取,那么整个系统的安全性也不复存在。非对称加密由于对称加密的这个弊端,产生了非对称加密,非对称加密中有两个密钥:公钥和私钥。公钥由私钥产生,但却无法推算出私钥;公钥加密后的密文,只能通过对应的私钥来解密。非对称加密的登录流程:初始状态:topgun终端要登录Server服务器,发起连接请求ssh work@server.com服务端运行有ssh服务,并持续监听22号端口,因此可以生成一对公钥和私钥;此时将公钥返回给客户端客户端使用公钥,对登录密码进行加密,(如服务器work用户密码为xxx),生成公钥加密字符串客户端将公钥加密字符串发送给服务端服务端使用私钥,解密公钥加密字符串,得到原始密码校验密码是否合法(此为本机work密码)返回登录结果给客户端:成功登录或密码错误在非对称加密中,由于只有公钥会被传输,而私钥是服务端本地保存,因此即便公钥被监听,也无法拿到原始密码,从而登录服务器。中间人攻击在非对称加密中可以有效保护登录密码不被泄漏,但这是在建立连接到真实服务器的情况下。设想一下,如果供给者并不监听密码或公钥,而是直接伪装成服务器呢:在该示例图中,存在Hacker服务器劫持了你的ssh建连请求(如通过DNS劫持等方式),导致你与Hacker机器的连接一切正常,因此它能拿到你的明文密码,并通过明文密码来攻击真实的服务端。那么SSH采用了非对称的加密方式,是怎么解决这个问题的呢?[work@client.com: ]$ ssh work@server.comThe authenticity of host ‘server.com (10.10.10.24)’ can’t be established.RSA key fingerprint is ad:2e:92:41:6f:31:b1:c1:35:43:eb:df:f1:18:a1:c1.Are you sure you want to continue connecting (yes/no)? yesWarning: Permanently added ‘server.com,10.10.10.24’ (RSA) to the list of known hosts.Password: (enter password) 在这个认证信息中,可以看到提示:无法确认主机server.com (10.10.10.24)的真实性,不过知道它的公钥指纹,是否继续连接?输入yes继续连接后,就会确认该服务器为可信任服务器,然后添加到known_hosts文件中,下次不用再次确认,然后跳转到输入密码的验证阶段。这种简单粗暴的方式相当于让我们肉眼比对来判断目标服务器是否是真实服务器,我觉得并不是最理想的方式,希望后续会有更完美的认证方式。之所以用fingerprint(公钥指纹)代替key,主要是key过于长(RSA算法生成的公钥有1024位),很难直接比较。所以,对公钥进行hash生成一个128位的指纹,这样就方便比较了。SSH免密登录我们已经掌握如何使用ssh登录远程服务器了,但是每次登录都要输入密码,比较麻烦。ssh提供一种免密登录的方式:公钥登录。在客户端使用ssh-keygen生成一对密钥:公钥+私钥将客户端公钥追加到服务端的authorized_key文件中,完成公钥认证操作认证完成后,客户端向服务端发起登录请求,并传递公钥到服务端服务端检索authorized_key文件,确认该公钥是否存在如果存在该公钥,则生成随机数R,并用公钥来进行加密,生成公钥加密字符串pubKey(R)将公钥加密字符串传递给客户端客户端使用私钥解密公钥加密字符串,得到R服务端和客户端通信时会产生一个会话ID(sessionKey),用MD5对R和SessionKey进行加密,生成摘要(即MD5加密字符串)客户端将生成的MD5加密字符串传给服务端服务端同样生成MD5(R,SessionKey)加密字符串如果客户端传来的加密字符串等于服务端自身生成的加密字符串,则认证成功此时不用输入密码,即完成建连,可以开始远程执行shell命令了实现免密登录ssh-genkey是生成密钥的工具,执行完成后生成公钥和密钥,这两个文件会默认保存在/.ssh/路径下。常用的参数为:-t: 指定生成密钥类型(rsa、dsa)。默认为rsa-f: 指定存放私钥的文件,公钥文件名为私钥文件名加.pub后缀。默认为id_rsa-P: 指定passphrase(私钥的密码),用于确保私钥的安全。默认为空-C: 备注。默认为user@hostname我们直接执行来生成密钥,所有的参数都可以为空,也就是一直回车确认:$ ssh-keygenGenerating public/private rsa key pair.Enter file in which to save the key (/home/work/.ssh/id_rsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in id_rsa.Your public key has been saved in id_rsa.pub.The key fingerprint is:74:17:74:38:b2:c7:70:fd:1d:33:eb:e2:71:71:cc:11 work@client.com此时,生成的文件在/.ssh/目录下,我们会看到这些文件:id_rsa // 私钥文件 id_rsa.pub // 公钥文件authorized_keys // 存放客户端公钥的文件known_hosts // 确认过公钥指纹的可信服务器列表的文件config // 指定不同域名使用哪个密钥的配置文件因为一台机器即能是客户端,又能是服务端,因此同时存在authorized_keys(在该机器为服务端时使用)和Known_hosts(在该机器为客户端时使用)。我们的服务器会有很多的用户,如果所有的用户都用同一份密钥,可能就没办法划分权限或者区分用户,如多个用户提交git就需要按照用户名来生成密钥,用于区分用户。同时你可能也希望针对不同的服务器使用不同的密钥对,因此需要config配置文件来配置针对不同服务器的配置:$vim ~/.ssh/configHost a.baidu.comUser workIdentityFile ~/.ssh/id_rsaHost b.baidu.comUser zhaoshuaiqiangIdentityFile ~/.ssh/zhaoshuaiqiang这样在连接不同的服务器时,就会使用不同的密钥文件来登录。在客户端生成密钥对之后,将公钥追加到服务器的authorized_keys文件中即可。 … 15 ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAn30bjwtkLW82vTlLMQnI/a42J2g7o+HBCpSzBgNG+xfZuSNQOAU8+FNKQvriT4AL7ToiTtrZDLOEGqyQzaxQejuNnWG6aQ9ETh96qXhVLecWidaBieFGuv+F uXz6x551xtFXx64AzG+706dhnv1nOACYlrnfvXhi5kZzWzprET+CxMIeYhJQwwc19pF5zCWeU9QUvd1mOu0n8JVycevmuXRdVx9WpXq2+aaaaaaaa3uYGMBxvSLtT40O1AiEZ+k9EeYCnTEV tnGoVWCyxpwv6rR/GDOtJL/d+/Wb6I0HEKxxe087yZz8GWpQN5TEIAjq3oEjI/aiGw== work@a.baidu.com 16 ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAzRmK+CAVLnryXqQwweu8Yji8bGAvqzf8PSDzYn1nmE6ZeDkBbrWvFlVZ2yOip3IX8RjvuPc28mTCr0LsIOOmpvET0SzOkt0hzLBPiyCN/QvbKU/RbUv8v5y2 hEAlbUkMEzv7qOHQEruGEvA5y99gf/nYjK5OFKVpmg838OScUV3i88Xbqk8rtcuRZHWuZLnuB5spBsEE5r1UrnH/Ik7frZr8Vb4X6aZWbAp1yc0SqZ8JXVbmOiakqq0WqkLm+zqhEwr+Ooh2guH23x9zjMqY Uy+aaaaaBEBC+LepCvskArBt/SRwJDJkcItz8T7kBC3CP0Y0X4hB+6k6/yM/pup5w== work@b.baidu.com此时,即可免密登录服务器。私钥的安全性假设你已经实现了服务器集群的免密登录,那么如果你的一台客户端被攻击成功了,那么整个集群的安全性便荡然无存了。因此,我们有时还需要对密钥做安全性保障,即设置私钥密码:// 使用rsa方法加密,生成test密钥对,私钥密码为123456ssh-keygen -t rsa -f test -P 123456 此时,各机器仍然是免密登录,但是需要你输入私钥密码:$ssh work@a.baidu.comEnter passphrase for key ‘/home/work/.ssh/test’: 参考资料RUNOOB-Linux scp命令:http://www.runoob.com/linux/l…linux-doc scp跨机远程拷贝:https://linuxtools-rst.readth…维基百科 Secure Shell:https://zh.wikipedia.org/wiki…简书 图解SSH原理:https://www.jianshu.com/p/334…CSDN scp在linux中实现两台主机传件–互信无需输入密码: https://blog.csdn.net/posonri… ...

February 27, 2019 · 1 min · jiezi

SSH 免密登录

理想案例假设一切都很顺利的话,最简单的方式如下:使用 ssh-keygen 命令在本地生成一对密钥(Public/Private Key)使用 ssh-copy-id username@your-server-ip 命令将本地的公钥上传到远程服务器现在使用 ssh username@your-server-ip 命令即可免密登录了如果之前已经在本地生成过密钥了,那第一步都可以省了。怎么看有没有生成过:使用 ls -a ~/.ssh 命令看下是否已经存在 id_rsa 和 id_rsa.pub 文件,有即生成过。现实情况但往往看别人玩的很嗨,到自己实操了就会出现各种问题。还是那句话:该踩的坑一个都不会少! 如果遇到问题了可以看看下面列举出来的常见的 TROUBLESHOOTING。如果你在执行 ssh-copy-id 命令时指定了某个公钥,比如 ssh-copy-id -i ~/.ssh/id_rsa_another.pub username@your-server-ip,此时注意在使用 ssh 命令远程连接的时候也需要指定这个公钥,否则默认是会拿 ~/.ssh/id_rsa.pub 去匹配的,所以你的连接命令应该是类似这样:ssh -i ~/.ssh/id_rsa_another.pub username@your-server-ip。SSH 服务端可能配置了不允许公钥授权登录。查看服务器上的 /etc/ssh/sshd_config 文件里是否配置正确:PubkeyAuthentication yesSSH 服务端可能配置了不允许 root 用户登录。查看服务器上的 /etc/ssh/sshd_config 文件,其中如果包含 PermitRootLogin no 则将其改为 yes基本原理一张时序图最能说明问题了 :P参考资料Ssh-copy-id for copying SSH keys to servers | SSH.COM

February 19, 2019 · 1 min · jiezi

聊一聊SSH

如果你对NodeJs系列感兴趣,欢迎关注微信公众号:前端神盾局 或 github NodeJs系列文章身为一枚合格的搬砖工程师,笔者经常需要登录服务器去查看日志或者部署应用,ssh也随之成为最常用的linux命令之一。本文主要是对SSH的概念和用法做一些简单的梳理,大神请绕道。什么是SSHSSH是一种加密的网络传输协议,可在不安全的网络中为网络服务提供相对安全的传输环境。任何网络服务都可以通过SSH实现安全传输,但日常使用最多的还是远程登录服务器。// 登录一台端口为22,用户名为username,ip地址为xx.xx.xx.xx的远程主机ssh -p 22 username@xx.xx.xx.xx早先,互联网通信基本是裸奔的(明文传输),这使得内容很容易被窃取或监听。1995年,芬兰学者Tatu Ylonen设计了SSH协议,将登录信息全部加密,成为互联网安全的一个基本解决方案,迅速在全世界获得推广,目前已经成为Linux系统的标准配置。那SSH是如何实现加密的呢?整个过程如下:远程主机收到用户的登录请求,把自己的公钥发给用户;用户使用这个公钥,将登录密码加密后,发送回来。远程主机用自己的私钥,解密登录密码,如果密码正确,就同意用户登录。当然这个过程并不是万无一失的,依旧存在“中间人攻击”的风险,具体可参考阮一峰老师的文章:SSH原理与运用(一):远程登录本地端口转发在实际项目中,笔者经常遇到这样的一种情况:由于测试环境中数据库和开发数据库的没有同步,导致笔者无法很好的复现bug。那有同学问,为什么不直接连到测试服务器呢?原因很简单,连不上。测试环境数据库服务器并没有对外开放。所以刚开始的时候,笔者为此相当苦恼,每次需要验证数据的时候,都要先把测试环境中数据导出再导入到开发环境中,这样一趟下来十几分钟过去了…那有什么方法可以连到测试数据库呢?有的,使用ssh本地端口转发先来描述一下场景,host1(106.xx.xxx.xx)是远程主机,是可以对外访问的;host2是内网主机(10.xx.xxx.x 安装了mongo数据库),只能通过host1访问,无法连接外网。我们需要两个步骤实现本地端口转发创建本地服务器const http = require(‘http’);const server = http.createServer(function(req,res){});server.listen(5000);这里我们创建了一个端口为5000的本地服务ssh转发ssh -L 5000:10.xx.xxx.x:27017 username@106.xx.xxx.xx命令中的L参数一共接受三个值,分别是"本地端口:目标主机:目标主机端口",它们之间用冒号分隔。这条命令的意思,就是指定SSH绑定本地端口5000,然后指定host1将所有的数据,转发到目标主机host2的27017端口。运行命令,随后我们在浏览器中打开http://localhost:5000,可以看到页面显示如下:It looks like you are trying to access MongoDB over HTTP on the native driver port.这表示我们连接成功~ssh命令挺长的,还有各种ip地址…有没有简化版呢?好吧~我们可以使用tunnel-ssh改造一下const tunnel = require(’tunnel-ssh’);const server = tunnel({ keepAlive: true, // host1 host: ‘106.xx.xxx.xx’, username: ‘superTerrorist’, password: ‘xxxx’, port: 22, // 内网主机 host2 dstHost: ‘10.xx.xxx.x’, dstPort: 27017, // 本地端口 localPort: 5000,},async function(error,server){ if(error){ console.log(error); return; } console.log(‘ssh tunnel connected’);});这里我们使用了第三方包tunnel-ssh实现了本地转发的功能,每次我们只要使用node script.js即可,这比使用ssh清爽多了。如果各位同学还有更好的方法,欢迎在此留言讨论参考Secure Shell鸟哥的Linux私房菜SSH原理与运用 ...

February 14, 2019 · 1 min · jiezi

使用ssh config作为ssh代理轻松管理内网服务器

前言企业内部大部分服务器都只有内网,一般可以使用NAT方式正向代理访问公网资源。对于Linux来说一般通过ssh登录服务器,在没有公网IP的情况下可以修改ssh config配置文件,利用一台可以接入内网并具有公网IP的服务器作为代理或者称为Tunnel跳板机来管理,可以灵活定制访问规则并优化ssh参数让管理更加轻松。使用ssh config作为ssh代理轻松管理内网服务器更新历史2019年01月31日 - 初稿阅读原文 - https://wsgzao.github.io/post…扩展阅读SSH CONFIG FILE - https://www.ssh.com/ssh/config/ssh_config的配置文件来源man ssh_configNAME ssh_config – OpenSSH SSH client configuration filesDESCRIPTION ssh(1) obtains configuration data from the following sources in the following order: 1. command-line options 2. user’s configuration file (/.ssh/config) 3. system-wide configuration file (/etc/ssh/ssh_config)ssh程序可以从三个途径获取配置参数:命令行选型,比如 -F configfile用户配置文件,放置在 /.ssh/config系统配置文件,放置在 /etc/ssh/ssh_config(区别于 /etc/ssh/sshd_config)上面三个途径,前面的途径传入的参数可以覆盖后面的途径传入的参数(与 linux 里的大部分应用类似)。因为/etc/ssh/ssh_config 会影响 ssh 全局的配置,因此如果想对多主机进行管理(不影响别人的情况下),可以考虑修改自己家目录下的/.ssh/config 文件( 字符表示当前登录用户的家目录)。ssh_config配置文件实例首先看一个配置文件的 demo,假设8.8.8.8是你可以直接登录的Tunnel公网跳板机,10.65.32.0是需要管理的内网地址段,前提是8.8.8.8和内网服务器的防火墙策略均已配置正确,这里就不再赘述。# cat ~/.ssh/configStrictHostKeyChecking noCheckHostIP noHost 10.65.32.* HostName %h ProxyCommand ssh bastion_GOP_SG_NC_MAIN -W %h:%pHost bastion_GOP_SG_NC_MAIN HostName 8.8.8.8 port 22 User wangaoHost 10.65.200.* HostName %h ProxyCommand ssh bastion_GOP_SG_MH_MAIN -W %h:%pHost bastion_GOP_SG_MH_MAIN HostName 9.9.9.9 port 22 User wangaoCheckHostIP no,禁用known_hosts检查Directs ssh to additionally check the host IP address in the known_hosts file.StrictHostKeyChecking no,跳过known_hosts写入Specifies if ssh should never automatically add host keys to the ~/.ssh/known_hosts file, and refuses to connect to hosts whose host key has changed.Host 字段Host 字段配置了登录别名,这里需要注意的是,Host 是支持通配符的, * 代表 0~n 个非空白字符,? 代表一个非空白字符,! 表示例外通配HostName 字段指定远程主机名,可以直接使用 IP 地址。如果这个字段中包含 ‘%h’ ,则实际使用时会被命令行中的主机名替换User 字段指定登录用户名IdentityFile 字段指定密钥认证使用的私钥文件路径。默认为 ~/.ssh/id_rsa。这个字段可以指定多个密钥文件(以 , 分开),在连接的过程中会依次尝试这些密钥文件。和 HostName 字段一样,值也可以直接指定参数代替:Port 字段指定远程主机端口号,默认为 22 。%h,远程主机名%p,远程端口参考如果你还不了解ssh或者对ssh端口转发感兴趣,可以参考以下内容SSH使用密钥登录并禁止口令登录实践 - https://wsgzao.github.io/post…玩转 SSH 端口转发 - https://blog.fundebug.com/201… ...

February 1, 2019 · 1 min · jiezi

Github 生成新的SSH密钥并添加至SSH-Agent

问题:hexo d 时出现错误 Error: ERROR: Permission toremote: Permission to huweihuang/hexo-theme-huweihuang.git denied to wanghaijuan.fatal: unable to access ‘https://github.com/huweihuang/hexo-theme-huweihuang/': The requested URL returned error: 403FATAL Something’s wrong. Maybe you can find the solution here: http://hexo.io/docs/troubleshooting.htmlError: remote: Permission to huweihuang/hexo-theme-huweihuang.git denied to wanghaijuan.fatal: unable to access ‘https://github.com/huweihuang/hexo-theme-huweihuang/': The requested URL returned error: 403 at ChildProcess.<anonymous> (D:\project\blog\hexo-huweihuang\node_modules\hexo-deployer-git\node_modules\hexo-util\lib\spawn.js:37:17) at emitTwo (events.js:126:13) at ChildProcess.emit (events.js:214:7) at ChildProcess.cp.emit (D:\project\blog\hexo-huweihuang\node_modules\cross-spawn-async\lib\enoent.js:37:29) at maybeClose (internal/child_process.js:925:16) at Process.ChildProcess._handle.onexit (internal/child_process.js:209:5)原因:huweihuang/hexo-theme-huweihuang.git 拒绝接受 wanghaijuan。 说明当前有两个github账号,可以更新博客, 新的github账号没有配置好。解决办法:在Github生成新的SSH密钥配置步骤:一、生成新的SSH密钥1、打开Git Bash。2、 进入.ssh 根目录下。cd /.ssh3、输入GitHub电子邮件地址,其中your_email@example.com是您关联的GitHub邮箱。ssh-keygen -t rsa -b 4096 -C “your_email@example.com"4、输入保存的密钥文件并接受默认文件地址,按Enter键// 用提供的电子邮件作为标签创建一个新的ssh密钥。(无需操作)Generating public/private rsa key pair. // 输入名称并按Enter键,其中hexo_rsa可自行设置Enter a file in which to save the key (/c/Users/you/.ssh/id_rsa):hexo_rsa5、输入安全密码,没有则为空,按Enter键进行下一步Enter passphrase (empty for no passphrase): [Type a passphrase]Enter same passphrase again: [Type passphrase again]此时,应该在默认路径下,生成了两个文件,一个是hexo_rsa,另一个是hexo_rsa.pub;二、将SSH密钥添加到SSH-Agent在将新的SSH密钥添加到SSH-Agent管理密钥之前,您应该检查现有的SSH密钥。ls -al / .ssh看下返回的结果中是否已经存在了.pub结尾的文件,如果没有需要生成一个新的,如果存在了,直接看将SSH密钥配置到Github账户;6、启动ssh-agent,执行命令:eval $(ssh-agent -s)返回agent的Pid:7、将SSH密钥添加到SSH-Agent,其中hexo_rsa是生成SSH设置的名称ssh-ADD /.ssh/hexo_rsa8、打开hexo_rsa.pub文件,复制其内容,然后打开Github账户,按图片步骤设置,最后将复制内容放置Key内容中,设置title,点击添加即可。验证SSH链接是否成功:输入命令:ssh -T git@github.com你将会看到输入Yes就可以啦相关链接: https://help.github.com/artic… ...

February 1, 2019 · 1 min · jiezi

解决Mac下SSH闲时自动中断的问题

使用 Mac 自带终端 SSH 连接服务器时,只要隔一小段时间不进行操作的话连接就会自动中断,造成了不好的体验。解决方法如下:1、连接到你的服务器2、编辑服务端配置文件 /etc/ssh/sshd_configvim /etc/ssh/sshd_config添加以下两行配置代码ClientAliveInterval 30ClientAliveCountMax 33、编辑客户端配置文件 /etc/ssh/ssh_configvim /etc/ssh/ssh_config在 Host * 下面添加以下两行配置代码ServerAliveInterval 30ServerAliveCountMax 34、断开SSH连接Ctrl + d5、SSH 重连服务然后执行重启sync 将数据由内存同步到硬盘中。reboot 就是重启重启后可能需要等待1分钟左右才能重新连接上。最后验证测试就可以了。

January 23, 2019 · 1 min · jiezi

vultr服务器可以ping通但是ssh无法连接问题

今天在vultr上面新建主机的时候,碰到可以ping通但是用ssh无法连接的情况,搜索一圈发现似乎还是一个挺常见的现象。这种现象的原因有可能是端口被墙。具体产生的原因这里就不说了。判断方法如何确定是端口被墙 ?用国内和国外的电脑来检测对应IP端口看是否关闭,如果国内关闭国外检测可以打开则说明被墙。首先,ssh一般默认的端口是22,当然也不一定。这里以我新建的Centos7的VPS为例。国内的可以使用自己电脑上命令行的telnet来测试。$ telnet 45.32.45.77 22如果成功的话结果为:Trying 45.32.45.77 22…Connected to 45.32.45.77.vultr.com.如果失败则为:telnet: connect to address 45.32.45.77: Connection refusedtelnet: Unable to connect to remote host国外的直接使用检测网站 网站地址输入IP和 端口,点击 check 即可。解决办法解决方法很简单,这个不是我们主机可以控制的。好在vultr可以随便摧毁和新建主机。这里给个建议,如果碰到这种情况,还想用这个机房的vps的话,比方我就比较偏爱东京的,快啊。那就不要先别摧毁当前被墙的主机,直接重新建一个,以免摧毁后再新建又给你分配跟之前一样IP的主机,那就悲催了。新建之后,基本上就可以解决这个问题了。如果还不行,那。。接着继续吧。

January 17, 2019 · 1 min · jiezi

iTerm2结合 expect 脚本实现 ssh 登录跳板机后登录指定服务器

痛点一般情况下,公司所有的服务器都在内网,公网访问、管理服务器都要先通过登录一台跳板机,然后再由跳板机登录到相应的服务器进行操作,跳板机与服务器的连接都是内网地址通常情况下,我们都是通过两次ssh,第一次本地机器登录跳板机,第二次在跳板机登录指定机器,需要输入两次密码,容易输错后端码农每天要无数次登录各种机器,如果能通过工具自动化,每次能省半分钟,并且心情会愉悦很多,下面来进行实战expect 脚本#!/usr/bin/expectset host [lindex $argv 0]# 设置一个变量,传入的参数,0 表示第一个参数,同时也为了复用,毕竟不只是管理一台服务器set TERMSERV 跳板机IPset USER 跳板机用户名set PASSWORD 跳板机密码set UATUN 内网服务器用户名set UATPWD 内网服务器密码# 登录跳板机spawn ssh -l $USER $TERMSERV# expect是expect环境的一个内部命令,判断上一个指令输入之后的得到输出结果是否包含"“双引号里的字符串,比如后面的”password:",表示上一个输出结果包含password:通配符表示前后可以是任意字符#类似于编程中的 switch语句,exp_continue相当于 continueexpect { “yes/no” {send “yes\r”;exp_continue;} “password:” { send “$PASSWORD\r” } }# 登录内网expect “$USER@*” {send “ssh -l $UATUN $host\r”}expect { “yes/no” {send “yes\r”;exp_continue;} “password:” { send “$UATPWD\r” } }interact# 执行完成后保持交互状态,把控制权交给控制台将脚本保存成一个文件,例如 server.exp可执行权限,chmod +x server.exp配置 iTerm2进入配置页面, Profiles -> Open Profiles -> Edit Profiles配置如图所示send text at start: [expect脚本路径] [参数0] [参数1] … 以空格分割大功告成到此为止,已完成所有准备工作,此时再进入指定机器,只需要三步打开 iTerm2快捷键 Command+o 打开 Profiles 面板选中某个 profile 单击,就直接进入目标机器了,开始挥洒方遒吧!温馨提示之所以在expect 脚本中设置了一个参数,是为了复用,要进入别的机器,复用同一个 .exp脚本,添加一个新的 profile 即可exp 脚本可以多个参数,达到更多场景下复用,具体又童鞋自己考量也可以把exp脚本当做sh脚本一样执行,比如 ./test-server.exp in-test-server-goapi-1,这样可以不必要配置 profileGitHub源码传送门各种数据结构及算法实现, LeetCode解题思路及答案大厂面试题汇总及答案解析本文为原创文章,转载注明出处,欢迎扫码关注公众号 楼兰 或者网站https://lovecoding.club,第一时间看后续精彩文章,觉得好的话,顺手分享到朋友圈吧,感谢支持。 ...

January 15, 2019 · 1 min · jiezi

解决packet_write_wait: Connection to...: Broken pipe

问题打算从远程仓库克隆项目到本地时,报错:$ git clone git@github.com:EverChan6/meetingDemo.gitCloning into ‘meetingDemo’…packet_write_wait: Connection to 52.74.223.119 port 22: Broken pipe // <==就是它!!!fatal: Could not read from remote repository.Please make sure you have the correct access rightsand the repository exists.解决1. 从网上看了挺多解决办法,终于找到一个说辞是说由于多日未 进行ssh 登录操作,本地 publickey 失效造成的。所以解决方法就是Adding your SSH key to the ssh-agent$ ssh-add ~/.ssh/id_rsaIdentity added: /c/Users/HP/.ssh/id_rsa (/c/Users/HP/.ssh/id_rsa)2. 如果执行上面的命令出现如下错误Could not open a connection to your authentication agent.则先执行以下命令$ ssh-agent bash

January 8, 2019 · 1 min · jiezi

如何在web实现连接linux终端

1.使用开源框架GateOne(1)查看服务器python的版本和安装pip$python -V由上图,我服务器的python版本是2.7.5由上图,当python2的版本是2.7.9+或是python3的版本是3.4+时会自带pip,那我的python版本是2.7.5就需要另外安装pip。pip下载由上图,官网的最新版本是18.1。以wget的方式安装pip$wget https://bootstrap.pypa.io/get-pip.py$python get-pip.py(2)安装tornado和Pillow#查看tornado的版本$python -c “import tornado;print(tornado.version)"#上传tornado-2.4.1.tar.gz后进行解压缩安装$tar -zxvf tornado-2.4.1.tar.gz$cd tornado-2.4.1$python setup.py build$python setup.py install#查看pip安装的模块及对应的版本号,显示的Pillow版本是2.0.0$pip listtornado下载(3)安装GateOneGateOne下载#上传GateOne-1.1.tar.gz,解压缩,进行安装$tar -zxvf gateone-1.1.tar.gz$cd GateOne$python setup.py install由上图,安装路径在/opt/gateone启动gateone:第一次启动前,在/opt/gateone目录下不存在server.conf文件,第一次启动之后才会生成。修改配置文件/opt/gateone/server.conf,注意这里添加的origin地址是https:xxxx再次启动打开浏览器进行连接2.使用开源矿建websshwebssh的github地址403 Forbidden处理3.用saltstack实现参考资料:https://pip.pypa.io/en/stable… pip文档http://www.laozuo.org/10703.html CentOS安装配置GateOne实现Web终端SSH功能https://www.cnblogs.com/frank… 【webssh】网页上的SSH终端

December 22, 2018 · 1 min · jiezi

Centos7 防火墙 firewalld 实用操作

一.前言Centos7以上的发行版都试自带了firewalld防火墙的,firewalld去带了iptables防火墙。其原因是iptables的防火墙策略是交由内核层面的netfilter网络过滤器来处理的,而firewalld则是交由内核层面的nftables包过滤框架来处理。 相较于iptables防火墙而言,firewalld支持动态更新技术并加入了区域(zone)的概念。简单来说,区域就是firewalld预先准备了几套防火墙策略集合(策略模板),用户可以根据生产场景的不同而选择合适的策略集合,从而实现防火墙策略之间的快速切换。区域对于 firewalld 来说是一大特色,但是对于我们使用Centos7一般是在服务器上,需要切换zone的需求比较少,所以本文不做介绍了,网上资料也比较多,大家可以去百度找找资料。二.操作与配置1.服务操作启动服务:systemctl start firewalld这里不用担心启用了防火墙以后无法通过ssh远程,22端口默认加入了允许规则停止服务:systemctl stop firewalld重启服务:systemctl restart firewalld查看服务状态:systemctl status firewalld2.配置文件说明firewalld 存放配置文件有两个目录,/usr/lib/firewalld 和 /etc/firewalld,前者存放了一些默认的文件,后者主要是存放用户自定义的数据,所以我们添加的service或者rule都在后者下面进行。server 文件夹存储服务数据,就是一组定义好的规则。zones 存储区域规则firewalld.conf 默认配置文件,可以设置默认使用的区域,默认区域为 public,对应 zones目录下的 public.xml三.命令这里需要首先说明的是,在执行命令时,如果没有带 –permanent 参数表示配置立即生效,但是不会对该配置进行存储,相当于重启服务器就会丢失。如果带上则会将配置存储到配置文件,,但是这种仅仅是将配置存储到文件,却并不会实时生效,需要执行 firewall-cmd –reload 命令重载配置才会生效。1.重载防火墙配置firewall-cmd –reload2.查看防火墙运行状态firewall-cmd –state3.查看默认区域的设置firewall-cmd –list-all4.应急命令firewall-cmd –panic-on # 拒绝所有流量,远程连接会立即断开,只有本地能登陆firewall-cmd –panic-off # 取消应急模式,但需要重启firewalld后才可以远程sshfirewall-cmd –query-panic # 查看是否为应急模式5.服务firewall-cmd –add-service=<service name> #添加服务firewall-cmd –remove-service=<service name> #移除服务6.端口firewall-cmd –add-port=<port>/<protocol> #添加端口/协议(TCP/UDP)firewall-cmd –remove-port=<port>/<protocol> #移除端口/协议(TCP/UDP)firewall-cmd –list-ports #查看开放的端口7.协议firewall-cmd –add-protocol=<protocol> # 允许协议 (例:icmp,即允许ping)firewall-cmd –remove-protocol=<protocol> # 取消协议firewall-cmd –list-protocols # 查看允许的协议8.允许指定ip的所有流量firewall-cmd –add-rich-rule=“rule family=“ipv4” source address="<ip>” accept"例:firewall-cmd –add-rich-rule=“rule family=“ipv4” source address=“192.168.2.1” accept” # 表示允许来自192.168.2.1的所有流量9.允许指定ip的指定协议firewall-cmd –add-rich-rule=“rule family=“ipv4” source address="<ip>” protocol value="<protocol>" accept"例:firewall-cmd –add-rich-rule=“rule family=“ipv4” source address=“192.168.2.208” protocol value=“icmp” accept” # 允许192.168.2.208主机的icmp协议,即允许192.168.2.208主机ping10.允许指定ip访问指定服务firewall-cmd –add-rich-rule=“rule family=“ipv4” source address="<ip>” service name="<service name>" accept"例:firewall-cmd –add-rich-rule=“rule family=“ipv4” source address=“192.168.2.208” service name=“ssh” accept” # 允许192.168.2.208主机访问ssh服务11.允许指定ip访问指定端口firewall-cmd –add-rich-rule=“rule family=“ipv4” source address="<ip>” port protocol="<port protocol>" port="<port>" accept"例:firewall-cmd –add-rich-rule=“rule family=“ipv4” source address=“192.168.2.1” port protocol=“tcp” port=“22” accept” # 允许192.168.2.1主机访问22端口12.将指定ip改为网段8-11 的各个命令都支持 source address 设置为网段,即这个网段的ip都是适配这个规则:例如:firewall-cmd –zone=drop –add-rich-rule=“rule family=“ipv4” source address=“192.168.2.0/24” port protocol=“tcp” port=“22” accept"表示允许192.168.2.0/24网段的主机访问22端口 。13.禁止指定ip/网段8-12 各个命令中,将 accept 设置为 reject 表示拒绝,设置为 drop表示直接丢弃(会返回timeout连接超时)例如:firewall-cmd –zone=drop –add-rich-rule=“rule family=“ipv4” source address=“192.168.2.0/24” port protocol=“tcp” port=“22” reject"表示禁止192.168.2.0/24网段的主机访问22端口 。四.参考资料firewalld防火墙详解 by xuad88.本文作者:晓晨master阅读原文本文为云栖社区原创内容,未经允许不得转载。 ...

November 13, 2018 · 1 min · jiezi

centos 6 iptables修改后无法保存的解决方法

自己弄了一个vultur的便宜vps,主要用来爬梯子,但是发现频繁的遭受暴力密码破解的攻击(里面啥都没有,破解个球。。。。)于是改端口,禁root登录,生成rsa文件,添加防火墙规则,重启ssh,可是发现仍然登不上去。竟然发现知识用了防火墙的reload,没有用restart命令。。。。。所以用vi改完 /etc/sysconfig/iptables 后,保存退出,然后启用service iptables restart重新登录,ok。然后世界清静了。

May 15, 2018 · 1 min · jiezi