<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Ssh on 编程技术记录</title>
    <link>https://blog.z6z8.cn/tags/ssh/</link>
    <description>Recent content in Ssh on 编程技术记录</description>
    <generator>Hugo</generator>
    <language>zh-Hans</language>
    <lastBuildDate>Fri, 27 Nov 2020 10:02:24 +0000</lastBuildDate>
    <atom:link href="https://blog.z6z8.cn/tags/ssh/feed.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>macos 配置 git ssh访问方式</title>
      <link>https://blog.z6z8.cn/2020/11/27/macos-%E9%85%8D%E7%BD%AE-git-ssh%E8%AE%BF%E9%97%AE%E6%96%B9%E5%BC%8F/</link>
      <pubDate>Fri, 27 Nov 2020 10:02:24 +0000</pubDate>
       <guid isPermaLink="false">http://blog.z6z8.cn/?p=933</guid> 
      <description>&lt;h2 id=&#34;生成-ssh-key&#34;&gt;生成 ssh key&lt;/h2&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ ssh-keygen -t rsa -C &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;git服务端留存的邮箱地址&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Generating public/private rsa key pair.
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Enter file in which to save the key &lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;~/.ssh/id_rsa&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;这里输入ssh key保存路径，不建议使用默认地址&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Enter passphrase &lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;empty &lt;span style=&#34;color:#66d9ef&#34;&gt;for&lt;/span&gt; no passphrase&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;这里输入密码，建议输入空（方便后续配置）&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Enter same passphrase again: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;再输入一遍密码,建议输入空（方便后续配置）&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;应生成两个文件，公钥和私钥，文件名形式为 &lt;code&gt;xxx&lt;/code&gt;(私钥)， &lt;code&gt;xxx_pub&lt;/code&gt; 或者 &lt;code&gt;xxx.pub&lt;/code&gt;(公钥)。记住ssh key生成的文件路径。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;默认情况下，ssh会使用 &lt;code&gt;~/.ssh/id_rsa&lt;/code&gt; 这个私钥，但无法处理访问多个ssh远端的场景。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&#34;配置本地ssh访问git使用的私钥&#34;&gt;配置本地ssh访问git使用的私钥&lt;/h2&gt;
&lt;p&gt;打开 &lt;code&gt;~/.ssh/config&lt;/code&gt; 文件，如果没有则创建一个文本文件，添加如下内容&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# 请保证 Host 和 HostName 的值相同 （macos11 实测不相同时，git ssh 访问失败）&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# 远端ssh主机别名&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Host bitbucket.cmbc.com.cn
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#75715e&#34;&gt;# 远端ssh主机名（域名或者ip都可以）&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    HostName bitbucket.cmbc.com.cn
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#75715e&#34;&gt;# 鉴权文件 ，这填写ssh私钥文件路径&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    IdentityFile &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;ssh 私钥文件路径&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#75715e&#34;&gt;# 使用公钥算法进行鉴权&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    PreferredAuthentications publickey
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;关于 ssh config 更多细节参考 &lt;a href=&#34;https://linux.die.net/man/5/ssh_config&#34;&gt;https://linux.die.net/man/5/ssh_config&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>【转】ssh访问控制，多次失败登录即封掉IP，防止暴力破解</title>
      <link>https://blog.z6z8.cn/2020/06/27/%E3%80%90%E8%BD%AC%E3%80%91ssh%E8%AE%BF%E9%97%AE%E6%8E%A7%E5%88%B6%EF%BC%8C%E5%A4%9A%E6%AC%A1%E5%A4%B1%E8%B4%A5%E7%99%BB%E5%BD%95%E5%8D%B3%E5%B0%81%E6%8E%89ip%EF%BC%8C%E9%98%B2%E6%AD%A2%E6%9A%B4/</link>
      <pubDate>Sat, 27 Jun 2020 00:29:20 +0000</pubDate>
       <guid isPermaLink="false">http://blog.z6z8.cn/?p=872</guid> 
      <description>&lt;p&gt;读取/var/log/secure，查找关键字 Failed，例如：&lt;/p&gt;
&lt;p&gt;Sep 17 09:08:09 localhost sshd[29087]: Failed password for root from 13.7.3.6 port 44367 ssh2
Sep 17 09:08:20 localhost sshd[29087]: Failed password for root from 13.7.3.6 port 44367 ssh2
Sep 17 09:10:02 localhost sshd[29223]: Failed password for root from 13.7.3.6 port 56482 ssh2
Sep 17 09:10:14 localhost sshd[29223]: Failed password for root from 13.7.3.6 port 56482 ssh2&lt;/p&gt;
&lt;p&gt;从这些行中提取IP地址，如果次数达到10次(脚本中判断次数字符长度是否大于1)则将该IP写到 &lt;code&gt;/etc/hosts.deny&lt;/code&gt; 中。&lt;/p&gt;
&lt;p&gt;步骤：&lt;/p&gt;
&lt;p&gt;1、先把始终允许的IP填入 /etc/hosts.allow ，这很重要！比如：
sshd:19.16.18.1:allow
sshd:19.16.18.2:allow&lt;/p&gt;
&lt;p&gt;2、脚本 /usr/local/bin/secure_ssh.sh&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;#! /bin/bash
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&lt;/span&gt;cat /var/log/secure|awk &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;/Failed/{print $(NF-3)}&amp;#39;&lt;/span&gt;|sort|uniq -c|awk &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;{print $2&amp;#34;=&amp;#34;$1;}&amp;#39;&lt;/span&gt; &amp;gt; /usr/local/bin/black.list
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;for&lt;/span&gt; i in &amp;lt;code&amp;gt;cat  /usr/local/bin/black.list&amp;lt;/code&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;do&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  IP&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&amp;lt;code&amp;gt;echo $i |awk -F&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;{print $1}&amp;#39;&lt;/span&gt;&amp;lt;/code&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  NUM&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&amp;lt;code&amp;gt;echo $i|awk -F&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;{print $2}&amp;#39;&lt;/span&gt;&amp;lt;/code&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;${#&lt;/span&gt;NUM&lt;span style=&#34;color:#e6db74&#34;&gt;}&lt;/span&gt; -gt &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt;; &lt;span style=&#34;color:#66d9ef&#34;&gt;then&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    grep $IP /etc/hosts.deny &amp;gt; /dev/null
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt; $? -gt &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt;;&lt;span style=&#34;color:#66d9ef&#34;&gt;then&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      echo &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;sshd:&lt;/span&gt;$IP&lt;span style=&#34;color:#e6db74&#34;&gt;:deny&amp;#34;&lt;/span&gt; &amp;gt;&amp;gt; /etc/hosts.deny
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;fi&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#66d9ef&#34;&gt;fi&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;done&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;3、将secure_ssh.sh脚本放入cron计划任务，每1分钟执行一次。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Windows10：配置Visual Studio Code 以SSH方式访问远程主机</title>
      <link>https://blog.z6z8.cn/2019/09/21/windows10%EF%BC%9A%E9%85%8D%E7%BD%AEvisual-studio-code-%E4%BB%A5ssh%E6%96%B9%E5%BC%8F%E8%AE%BF%E9%97%AE%E8%BF%9C%E7%A8%8B%E4%B8%BB%E6%9C%BA/</link>
      <pubDate>Sat, 21 Sep 2019 02:49:16 +0000</pubDate>
       <guid isPermaLink="false">http://139.155.43.7:8000/?p=348</guid> 
      <description>&lt;p&gt;Windows10上遇到过ssh的坑，记录下过程&lt;/p&gt;
&lt;p&gt;参考 &lt;a href=&#34;https://code.visualstudio.com/docs/remote/troubleshooting#_installing-a-supported-ssh-client&#34;&gt;https://code.visualstudio.com/docs/remote/troubleshooting#_installing-a-supported-ssh-client&lt;/a&gt;&lt;/p&gt;
&lt;h1 id=&#34;环境和知识准备&#34;&gt;环境和知识准备&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;远程主机，并开启ssh-server服务（通常端口22）&lt;/li&gt;
&lt;li&gt;Windows环境（本文Windwos10家庭版）&lt;/li&gt;
&lt;li&gt;Visual Studio Code&lt;/li&gt;
&lt;li&gt;公钥加密算法，对SSH，通常为RSA&lt;/li&gt;
&lt;li&gt;已经生成好的ssh公钥文件和私有文件&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id=&#34;步骤&#34;&gt;步骤&lt;/h1&gt;
&lt;h2 id=&#34;安装ssh-client&#34;&gt;安装ssh-client&lt;/h2&gt;
&lt;p&gt;对于Windows10的一些版本，可以通过 &lt;code&gt;设置--系统--应用和功能--管理可选功能--添加功能&lt;/code&gt; 来开启ssh-client，奈何本穷的Windows10不支持。&lt;/p&gt;
&lt;p&gt;还有两种方法来安装ssh-client&lt;/p&gt;
&lt;p&gt;通过PowerShell安装，以管理员方式启动PowerShell，具体参考 &lt;a href=&#34;https://docs.microsoft.com/zh-cn/windows-server/administration/openssh/openssh_install_firstuse&#34; title=&#34;这里&#34;&gt;这里&lt;/a&gt;，反正本穷是没有成功。&lt;/p&gt;
&lt;p&gt;于是，只有通过安装Git for Windows来安装ssh-client了， &lt;a href=&#34;https://git-scm.com/download/win&#34; title=&#34;下载地址&#34;&gt;下载地址&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;安装remotessh&#34;&gt;安装RemoteSSH&lt;/h2&gt;
&lt;p&gt;这里需要给Visual Studio Code 安装扩展包，以支持RemoteSSH。 &lt;code&gt;Visual Studio Code -- 查看 --扩展&lt;/code&gt;,在扩展中搜索 &lt;code&gt;Remote Development&lt;/code&gt;，然后安装这个扩展包，会自动安装相关依赖包。&lt;/p&gt;
&lt;h2 id=&#34;配置vistual-studio-code-ssh&#34;&gt;配置Vistual Studio Code SSH&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;Visual Studio Code -- 设置&lt;/code&gt;，搜索SSH，在结果列表中找到 &lt;code&gt;扩展--Remote-SSH -- Remote.SSH:Config File&lt;/code&gt;，自定义RemoteSSH的配置文件路径，然后创建这个配置文件，内容如下:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Host 自定义别名
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    User 远程主机ssh登陆的用户名
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    HostName 远程主机名字，可以是ip地址
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    Port 远程主机ssh端口号，一般是22
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    IdentityFile 身份验证文件路径，即ssh私钥文件路径
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;访问&#34;&gt;访问&lt;/h2&gt;
&lt;p&gt;Vistual Studio Code &amp;ndash; 查看 &amp;ndash;命令面板 &amp;ndash;Remote-SSH：Connect ToHost&lt;/p&gt;
&lt;p&gt;选择配置文件中配置好的主机即可。&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
