<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[向东博客 专注WEB应用 构架之美 --- 构架之美，在于尽态极妍 | 应用之美，在于药到病除]]></title> 
<link>http://jackxiang.com/index.php</link> 
<description><![CDATA[赢在IT，Playin' with IT,Focus on Killer Application,Marketing Meets Technology.]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[向东博客 专注WEB应用 构架之美 --- 构架之美，在于尽态极妍 | 应用之美，在于药到病除]]></copyright>
<item>
<link>http://jackxiang.com/post//</link>
<title><![CDATA[[实践OK]Linux下通过ssh-keygen生成公钥放~/.ssh下，使ssh不用输入密码，免密码登录, ssh-keygen的使用方法。]]></title> 
<author>jack &lt;xdy108@126.com&gt;</author>
<category><![CDATA[Unix/LinuxC技术]]></category>
<pubDate>Tue, 02 Mar 2010 03:22:54 +0000</pubDate> 
<guid>http://jackxiang.com/post//</guid> 
<description>
<![CDATA[ 
	用它在Alpine上生成各种级别的密钥，RSA、DSA和ECDSA三者的签名：<br/><textarea name="code" class="php" rows="15" cols="100">
&nbsp;&nbsp;&nbsp;&nbsp;addgroup -g 701 www &amp;&amp;&#92;
&nbsp;&nbsp;&nbsp;&nbsp;adduser -u 701 -G www -s /sbin/nologin www -D -H &amp;&amp; &#92;
&nbsp;&nbsp;&nbsp;&nbsp;ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key -N &quot;&quot;&nbsp;&nbsp;&amp;&amp; &#92;
&nbsp;&nbsp;&nbsp;&nbsp;ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key -N &quot;&quot;&nbsp;&nbsp;&amp;&amp; &#92;
&nbsp;&nbsp;&nbsp;&nbsp;ssh-keygen -t ecdsa -f /etc/ssh/ssh_host_ecdsa_key -N &quot;&quot;&nbsp;&nbsp;&amp;&amp; &#92;
&nbsp;&nbsp;&nbsp;&nbsp;ssh-keygen -t ed25519 -f /etc/ssh/ssh_host_ed25519_key -N &quot;&quot;&nbsp;&nbsp;&amp;&amp; &#92;
&nbsp;&nbsp;&nbsp;&nbsp;usermod -s /bin/bash root&nbsp;&nbsp;&amp;&amp; &#92;
&nbsp;&nbsp;&nbsp;&nbsp;sed -i &#039;s@#PermitRootLogin prohibit-password@PermitRootLogin yes@&#039; /etc/ssh/sshd_config&nbsp;&nbsp;&amp;&amp; &#92; 
&nbsp;&nbsp;&nbsp;&nbsp;echo -e&nbsp;&nbsp;&quot;Cntvirdcops711&#92;n*******7*1&quot; &#124; passwd root&nbsp;&nbsp;&amp;&amp; &#92; 
</textarea><br/><br/>有些时候，我们在复制/移动文件到另一台机器时会用到scp，因为它比较安全。但如果每次 <br/><br/>都要输入密码，就比较烦了，尤其是在script里。不过，ssh有另一种用密钥对来验证的方 <br/><br/>式。下面写出我生成密匙对的过程，供大家参考。 <br/><br/>关键点：<br/>1）生成密钥的机器私钥不动，公钥给待连接的服务器。<br/>2）公钥放到要待连接的机器上要改名为：authorized_keys。（mv id_rsa.pub authorized_keys）<br/>3）权限得要是700：chmod -R 700 authorized_keys,在谁家就是chown 谁的权限，总之，在某人hime目录下面就只能某人读取即可，不需要其他人能读取或修改，一旦chown 后，755不必了，也是为了安全，# chmod 600 authorized_keys即可读取写入即可,记住：目录是700，里面的文件是600,也就是只能这个用户读取600，这个目录也是只能这个用户进入也就是目录得有x。<br/><textarea name="code" class="php" rows="15" cols="100">
/home/irdcops/.ssh ------- drwx&nbsp;&nbsp; 
/home/irdcops/.ssh/authorized_keys -rw
</textarea><br/>4）服务端：放谁的Home目录下在服务端执行命令时就是谁。<br/>5）客户端：在客户端登录时如不指明用户，就是客户端的用户名，如：客户端是root用户，不指名则是root@xx.xx.xx.xx去连接。如果服务端也是放/root/.ssh/authorized_key下，刚好，如客户端不是root，是test，则直接ssh是肯定连接不上的，因为变成了：test@xx.xx.xx.xx。<br/>6）同样，你客户client端连接时是xiangdong，但你生成密钥时是root（公钥匙放到待连接机的/home/xiangdong/.ssh/下。），此时也是对不上的，得以root环境（因为他要找当时生成密钥的私钥，你client本地换成了xiangodng，它没有了。）<br/>7）所以，鉴于6这种情况，最好生成时的用户和待连接的用户一样（实践证明如果lvops用户设置后，如果root下执行ssh -llvops xx.xx.xx.xx 也是需要密码的，而su到lvops就能免密码登陆成功，这块ansible是可以的，因为如xiangdong的/home/.ansible.cfg自己设置了id_rsa文件路径，而root下用ssh -l这种方法并没有带上id_rsa的路径去登陆，所以还是需要密码的。private_key_file = /home/xiangdong/irdcops_private_key&nbsp;&nbsp;前面文件来自后面拷贝:private_key_file = /home/lvops/.ssh/id_rsa ，这块儿如果是root操作注意把irdcops_private_key权限为xiangdong且能读取，否则ansible没法读取也就会需要密码或报错的问题。http://jackxiang.com/post/8967/），这样就会省去指定也好，用户名对不上，还得指定才行的这些小问题引发连接不上的问题。&nbsp;&nbsp;<br/>第七点，也是实践证明了的，符合上面1-6点后，也就不用指明用户名了，如下：<br/>[xiangdong@localhost .ssh]$ ssh 10.70.37.24<br/>The authenticity of host &#039;10.70.37.24 (10.70.37.24)&#039; can&#039;t be established.<br/>RSA key fingerprint is 56:94:6d:81:f3:e5:e2:8b:90:0a:93:3b:8e:7e:fd:c8.<br/>Please type &#039;yes&#039; or &#039;no&#039;: yes<br/>Warning: Permanently added &#039;10.70.37.24&#039; (RSA) to the list of known hosts.<br/>Last login: Thu May&nbsp;&nbsp;5 17:27:03 2016 from 192.168.101.227<br/><br/>http://blog.csdn.net/kongqz/article/details/6338690<br/>——————————————————生成步骤如下：——————————————————<br/>第一步：生成密匙对，我用的是rsa的密钥。使用命令 &quot;ssh-keygen -t rsa&quot; <br/><br/><br/>&nbsp;&nbsp; [user1@rh user1]$ ssh-keygen -t rsa<br/>&nbsp;&nbsp; Generating public/private rsa key pair.<br/>&nbsp;&nbsp; Enter file in which to save the key (/home/user1/.ssh/id_rsa):<br/>&nbsp;&nbsp; Created directory &#039;/home/user1/.ssh&#039;.<br/>&nbsp;&nbsp; Enter passphrase (empty for no passphrase):<br/>&nbsp;&nbsp; Enter same passphrase again:<br/>&nbsp;&nbsp; Your identification has been saved in /home/user1/.ssh/id_rsa.<br/>&nbsp;&nbsp; Your public key has been saved in /home/user1/.ssh/id_rsa.pub.<br/>&nbsp;&nbsp; The key fingerprint is:<br/>&nbsp;&nbsp; e0:f0:3b:d3:0a:3d:da:42:01:6a:61:2f:6c:a0:c6:e7 user1@rh.test.com<br/>&nbsp;&nbsp; [user1@rh user1]$<br/><br/>我的：<br/><br/><div class="code">Jackxiang:/usr/local/tads/htdocs/xxy/src/view/images #&nbsp;&nbsp;ssh-keygen -t rsa<br/>Generating 2048-bit rsa key pair<br/>&nbsp;&nbsp; 3 o.oOo.oOo.oO<br/>Key generated.<br/>2048-bit rsa, root@Tencent, Tue Mar 02 2010 11:26:08 +0800<br/>Passphrase : <br/>Again&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: <br/>Key is stored with NULL passphrase.<br/> (You can ignore the following warning if you are generating hostkeys.)<br/> This is not recommended.<br/> Don&#039;t do this unless you know what you&#039;re doing.<br/> If file system protections fail (someone can access the keyfile), <br/> or if the super-user is malicious, your key can be used without <br/> the deciphering effort.<br/>Private key saved to /root/.ssh2/id_rsa_2048_a<br/>Public key saved to /root/.ssh2/id_rsa_2048_a.pub</div><br/><br/>注意，我这儿：<br/>这儿公用密钥：/root/.ssh2/id_rsa_2048_a.pub<br/>私有密钥：/root/.ssh2/id_rsa_2048_a<br/>生成的过程中提示输入密钥对保存位置，直接回车，接受默认值就行了。接着会提示输入一 <br/><br/>个不同于你的password的密码，直接回车，让它空着。当然，也可以输入一个。(我比较懒 <br/><br/>，不想每次都要输入密码。) 这样，密钥对就生成完了。 <br/><br/>其中公共密钥保存在 ~/.ssh/id_rsa.pub&nbsp;&nbsp;&nbsp;&nbsp;=》 /root/.ssh2/id_rsa_2048_a.pub<br/>私有密钥保存在 ~/.ssh/id_rsa&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=》/root/.ssh2/id_rsa_2048_a<br/><br/><br/>然后改一下 .ssh 目录的权限，使用命令 &quot;chmod 755 ~/.ssh&quot;&nbsp;&nbsp; =》chmod 755&nbsp;&nbsp;/root/.ssh2<br/><br/>&nbsp;&nbsp; [user1@rh user1]$ chmod 755 /root/.ssh<br/>&nbsp;&nbsp; [user1@rh user1]$<br/><br/><br/><br/>之后把这个密钥对中的公共密钥复制到你要访问的机器上去（被以前需要密码访问的机器上），并保存为&nbsp;&nbsp;<br/><br/>~/.ssh/authorized_keys&nbsp;&nbsp; #My:&nbsp;&nbsp;&nbsp;&nbsp;mv id_rsa_2048_a.pub authorized_key<br/><br/><br/>&nbsp;&nbsp; [user1@rh user1]$ scp ~/.ssh/id_rsa.pub rh1:/home/user1/.ssh/authorized_keys&nbsp;&nbsp;//特别注意：这个是在服务器端操作的<br/>&nbsp;&nbsp; user1@rh1&#039;s password:<br/>&nbsp;&nbsp; id_rsa.pub&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;100%&nbsp;&nbsp;228&nbsp;&nbsp;&nbsp;&nbsp; 3.2MB/s&nbsp;&nbsp; 00:00<br/>&nbsp;&nbsp; [user1@rh user1]$<br/><br/><br/><br/>之这样就大功告成了。之后你再用ssh scp sftp 之类的访问那台机器时，就不用输入密码 <br/><br/>了，用在script上更是方便。<br/><br/><br/>SSH服务的配置<br/>1、配置SSH服务的运行参数，是通过修改配置文件/etc/ssh/sshd_config实现的。<br/>2、因为SSH服务使用默认的配置已经能够很好的工作，如果仅仅提供SSH服务不需要修改。这里只介绍一<br/>些常用的选项。<br/>#Port 22<br/>定义了SSH服务监听的断口号，SSH服务默认使用的端口号是22<br/>#Proctocol 2,1<br/>定义了SSH服务器使用SSH协议的顺序。默认识先使用SSH2协议，如果不成功则使用SSH1协议，为了安全起<br/>见，可以设置只使用SSH2协议。<br/>#ListenAddress 0.0.0.0<br/>定义SSH服务器帮定的IP地址,默认绑定服务器所有可用的IP地址.<br/>#PermitRootLogin yes<br/>定义是否允许管理员登陆<br/>#PermitEmptyPasswords no<br/>定义是否允许空密码登陆.<br/><br/>#PasswordAuthentication no<br/>定义是否使用口令认证方式,如果准备使用公钥认证可以设置为no<br/># ps aux&#124;grep ssh<br/>root&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2649&nbsp;&nbsp;0.0&nbsp;&nbsp;0.0&nbsp;&nbsp; 3360&nbsp;&nbsp; 840 ?&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ss&nbsp;&nbsp;&nbsp;&nbsp;2009&nbsp;&nbsp; 0:00 /usr/local/sbin/sshd -f /etc/ssh2/sshd2_config.l<br/><br/>vi&nbsp;&nbsp;/etc/ssh2/sshd2_config.l<br/> 即可！<br/><br/><br/>四 ：<br/>&nbsp;&nbsp; 吧 id_rsa ,拷到客户端，在服务器端吧id_rsa.pub 改名为authorized_keys<br/><br/><br/>cat id_rsa.pub &gt;&gt; authorized_keys<br/><br/><br/>注意：<br/>ssh2的配置：<br/>#PermitRootLogin yes<br/>定义是否允许管理员登陆<br/>#PermitEmptyPasswords no<br/>定义是否允许空密码登陆.<br/><br/>把 id_rsa ,拷到客户端，在服务器端吧id_rsa.pub 改名为authorized_keys<br/>mv id_rsa_2048_a.pub authorized_key&nbsp;&nbsp;这个是公钥重新命名。而客户端则是安装在自己的机器上这儿是：id_rsa_2048_a<br/>别弄反了！<br/><br/><br/>写在最后：<br/>root<br/>Jackxiang:/root/.ssh2 # scp ~/.ssh2/id_rsa_2048_a /root/.ssh2/authorized_keys21<br/>scp: warning: stat: id_rsa_2048_a (src): no such file (server msg: &#039;syserr: No such file or directory, file: /home/admin/.ssh2/id_rsa_2048_a&#039;)<br/>Tencent:/root/.ssh2 # whoami<br/>root<br/><br/> admin:x:0:100::/home/admin:/bin/bash<br/><br/>Jackxiang:/root/.ssh2 # ls /home/admin<br/>***<br/>不是真正的root，是root这个组的，于是得拷贝到：<br/>/home/admin/.ssh2/&nbsp;&nbsp;下，才行！<br/><br/><br/>附送，方便一键ssh连接：<br/><br/><br/><div class="code"># User specific aliases and functions<br/>alias df=&#039;df -Th&#039;<br/>alias l=&#039;ls -CF&#039;<br/>alias la=&#039;ls -A&#039;<br/>alias les=&#039;less -S&#039;<br/>alias topme=&#039;top -u `whoami`&#039;<br/>alias s33=&#039;ssh -Yi ~/.ssh/33 192.168.8.33&#039;<br/>alias s34=&#039;ssh -Yi ~/.ssh/33 192.168.8.34&#039;<br/>alias s35=&#039;ssh -Yi ~/.ssh/33 192.168.8.35&#039;<br/>alias s32=&#039;ssh -Yi ~/.ssh/33 192.168.8.32&#039;<br/>alias f32=&#039;sftp -oIdentityFile=~/.ssh/33 192.168.8.32&#039;<br/>alias s15=&#039;ssh -Yi ~/.ssh/15 192.168.8.15&#039;<br/>alias s16=&#039;ssh -Yi ~/.ssh/15 192.168.8.16&#039;<br/>alias s17=&#039;ssh -Yi ~/.ssh/15 192.168.8.17&#039;<br/>alias f15=&#039;sftp -oIdentityFile=~/.ssh/15 192.168.8.15&#039;</div><br/><br/>都三年前写的了，<br/>今年2011加上个参考：http://chenlb.blogjava.net/archive/2008/07/03/212293.html
]]>
</description>
</item><item>
<link>http://jackxiang.com/post//#blogcomment</link>
<title><![CDATA[[评论] [实践OK]Linux下通过ssh-keygen生成公钥放~/.ssh下，使ssh不用输入密码，免密码登录, ssh-keygen的使用方法。]]></title> 
<author> &lt;user@domain.com&gt;</author>
<category><![CDATA[评论]]></category>
<pubDate>Thu, 01 Jan 1970 00:00:00 +0000</pubDate> 
<guid>http://jackxiang.com/post//#blogcomment</guid> 
<description>
<![CDATA[ 
	
]]>
</description>
</item>
</channel>
</rss>