http://www.cnblogs.com/wwufengg/articles/ssh-openssh-detail.html

http://www.cnblogs.com/jjkv3/archive/2012/04/23/2465829.html

SSH命令:
ssh免密码登录, 发送命令到多个Linux
一步将SSH公钥传输到另一台机器:
ssh-keygen;ssh-copy-id user@host; ssh user@host

1.在A机下生成公钥/私钥对。
[xx@A ~]$ ssh-keygen -t rsa -P ''
-P表示密码,-P '' 就表示空密码,也可以不用-P参数,这样就要三车回车,用-P就一次回车。
它在/etc/xx下生成.ssh目录,.ssh下有id_rsa和id_rsa.pub。

2.把A机下的id_rsa.pub复制到B机下,在B机的.ssh/authorized_keys文件里,我用scp复制。
[xx@A ~]$ scp .ssh/id_rsa.pub root@192.168.1.181:/etc/xx/id_rsa.pub

3.B机把从A机复制的id_rsa.pub添加到.ssh/authorzied_keys文件里。
[xx@B ~]$ cat id_rsa.pub >> .ssh/authorized_keys
[xx@B ~]$ chmod 600 .ssh/authorized_keys

小结:登录的机子可有私钥,被登录的机子要有登录机子的公钥。这个公钥/私钥对一般在私钥宿主机产生。
上面是用rsa算法的公钥/私钥对,当然也可以用dsa(对应的文件是 id_dsa,id_dsa.pub)

http://www.cnblogs.com/xiaoluo501395377/archive/2013/04/08/3008987.html

配置文件:

全部位于/etc/ssh 下

主要有:ssh_config sshd_config —— 其中大部分都是被注释了的, 可见,其配置项不常用,

主要的几个配置项?

所谓ssh 即 secure shell, 是需要用到加密通道的。故,一般来说我们需要配置密钥。。。

http://www.cnblogs.com/jhg123/archive/2011/06/08/2075558.html 没看明白,为什么要执行

ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
59:48:ab:6f:9d:98:27:e2:aa:16:68:0b:cc:c2:7a:fa root@linux
The key's randomart image is:

ssh-keygen是为了生成密钥这个我知道,但是,好像没这一步也是ok的。—— 为什么下次使用的时候还是的每次输入密码呢?

我们直接执行ssh的时候也是会提示我们是否生成密钥、建立信任关系、还输入远程密码。

从客户端来看,SSH提供两种级别的安全验证。

  第一种级别(基于口令的安全验证)只要你知道自己帐号和口令,就可以登录到远程主机。所有传输的数据都会被加密, 但是不能保证你正在连接的服务器就是你想连接的服务器。可能会有别的服务器在冒充真正的服务器, 也就是受到“中间人”这种方式的攻击。

  第二种级别(基于密匙的安全验证)需要依靠密匙,也就是你必须为自己创建一对密匙,并把公用密匙放在需要访问的服务器上。 如果你要连接到SSH服务器上,客户端软件就会向服务器发出请求,请求用你的密匙进行安全验证。服务器收到请求之后, 先在你在该服务器的家目录下寻找你的公用密匙,然后把它和你发送过来的公用密匙进行比较。如果两个密匙一致, 服务器就用公用密匙加密“质询”(challenge)并把它发送给客户端软件。 客户端软件收到“质询”之后就可以用你的私人密匙解密再把它发送给服务器。

  用这种方式,你必须知道自己密匙的口令。但是,与第一种级别相比,第二种级别不需要在网络上传送口令。

  第二种级别不仅加密所有传送的数据,而且“中间人”这种攻击方式也是不可能的(因为他没有你的私人密匙)。 但是整个登录的过程可能需要10秒。

———— 明白了!

总结:

windows不带ssh命令的客户端,自然也没有带ssh服务, 一般借助第三方工具作为ssh客户端:如putty/winscp/(ftp工具/xshell?)
linux一般默认带有openssh程序(提供了服务),并默认开启状态。 同时提供客户端、服务端功能?

linux查询ssh服务是否开启:

linux129:~ # ps -ef | grep ssh
root 9864 1 0 Feb24 ? 00:00:00 /usr/sbin/sshd -o PidFile=/var/run/sshd.init.pid    —————— sshd即ssh后台服务

http://www.cnblogs.com/runsir/archive/2007/08/20/862494.html 这文章写的不错,很详细,没能看完

待续

===========

终于完全搞明白!

确实只需要三步,现在在看来其实已经很简单!

当 ssh-keygen -t rsa -P 'a1234'的时候,下次执行ssh或者scp之类的,需要输入passphrase ,而此处的a1234即为passphrase ———— 密码短语!

linux:~ # ssh root@10.67.164.217
Enter passphrase for key '/root/.ssh/id_rsa': 
Last login: Mon Mar 10 09:57:11 2014 from 10.74.169.50

如果passphrase 输入不正确,其实我们还可以通过password来登录(这应该是ssh提供的一个机制):

linux:~ # ssh root@10.67.164.217 'ls /opt/lktest'
Enter passphrase for key '/root/.ssh/id_rsa':
Password:
Password:
Password:
Permission denied (publickey,keyboard-interactive).

linux:~ # scp /root/.ssh/id_rsa.pub root@10.67.164.217:/root/.ssh/id_rsa.pub
Enter passphrase for key '/root/.ssh/id_rsa':
Enter passphrase for key '/root/.ssh/id_rsa':
Enter passphrase for key '/root/.ssh/id_rsa':
Password:
Password:

如果是ssh-keygen -t rsa -P ''

则是不需要输入任何密码(包括passphrase密码短语)的!!! 如果还是输入密码,则说明没有设置好ssh。

linux:~ # ssh root@10.67.164.217 'ls /opt/lktest'
1205
c
ssh

test

workdir

。。。

====

如果是非root用户userlk呢?

稍微有些不同,这个时候,我们需要把id_rsa.pub、authorized_keys 等放至userlk,id_rsa.pub、authorized_keys 可能新建生成:

userlk@linux:/userlk/.ssh> ll
total 4
-rw-r--r-- 1 userlk ossgroup 223 2013-12-04 16:02 known_hosts
userlk@linux:/userlk/.ssh> l
total 16
drwx------ 2 userlk ossgroup 4096 2014-03-10 10:18 ./
drwxr-xr-x 7 userlk ossgroup 4096 2014-03-10 10:15 ../
-rw-r--r-- 1 root root 392 2014-03-10 10:18 id_rsa.pub
-rw-r--r-- 1 userlk ossgroup 223 2013-12-04 16:02 known_hosts
userlk@linux:/userlk/.ssh> cat id_rsa.pub >> authorized_keys
userlk@linux:/userlk/.ssh> l
total 20
drwx------ 2 userlk ossgroup 4096 2014-03-10 10:19 ./
drwxr-xr-x 7 userlk ossgroup 4096 2014-03-10 10:15 ../
-rw-r----- 1 userlk ossgroup 392 2014-03-10 10:19 authorized_keys
-rw-r--r-- 1 root root 392 2014-03-10 10:18 id_rsa.pub
-rw-r--r-- 1 userlk ossgroup 223 2013-12-04 16:02 known_hosts

---- 但是这个时候,我们再使用ssh root@10.67.164.217 'ls /opt/lktest'则可能又失败了,因为此时的id_rsa已经改变了罢!

怎么办。。。需要再次设置root的ssh,他们可以共享一个id_rsa。嘎嘎!完毕!

ssh/openssh的更多相关文章

  1. ssh - OpenSSH SSH 客户端 (远程登录程序)

    总览 (SYNOPSIS) ssh [-l login_name ] hostname | user@hostname [command ] ssh -words [-afgknqstvxACNTX1 ...

  2. Ubuntu 搭建SSH服务器

    参考地址:https://help.ubuntu.com/community/SSH/OpenSSH/Configuring 配置文件路径:/etc/ssh/ssh_config 和 /etc/ssh ...

  3. 如何在ubuntu中启用SSH服务

    如何在ubuntu14.04 中启用SSH服务 开篇科普:  SSH 为 Secure Shell 的缩写,由 IETF 的网络工作小组(Network Working Group)所制定:SSH 为 ...

  4. SSH权威指南(转载)

    本书是一本介绍通信安全的书籍,如果你想保障你的通信安全,本书能给你一个很好的解决方案.本书从ssh协议介绍起,到具体的开源实现和商业实现.但本书同时介绍开源实现和商业实现,给人感觉比较乱.注意:由于o ...

  5. 玩转SSH端口转发

    SSH有三种端口转发模式,本地端口转发(Local Port Forwarding),**远程端口转发(Local Port Forwarding)**以及**动态端口转发(Dynamic Port ...

  6. man ssh翻译(ssh命令中文手册)

    本文为命令ssh的man文档翻译,翻译了90%的内容,剩余是一些没必要翻译的东西,请见谅. 如此文有所疑惑,希望我的另一篇文章能解惑: SSH(1)                    BSD Ge ...

  7. SSH原理和应用

    SSH(Secure SHell)是为远程登录, 远程通信等设计的安全通信协议, 由芬兰研究员于1995年提出,其目的是用于替代非安全的Telnet.rsh.rexec等不安全的远程Shell协议. ...

  8. Linux命令:ssh

    ssh介绍 ssh用法 ssh帮助 SSH() BSD General Commands Manual SSH() NAME ssh — OpenSSH SSH client (remote logi ...

  9. OpenSSH配置与基本使用

    SSH访问远程 SSH常见分类: telnet-远程登录协议,23/TCP 明文认证.明文传输(不安全) ssh(Secure SHell)-应用层协议,22/TCP 通讯和认证过程加密.主机认证 用 ...

随机推荐

  1. php socket解决方案

    最近一直在为移动应用提供 php服务端api,以前 实时交互数据需求不严格(定时从手机端发送http请求),现在业务需求变更, 需要实时交互式接口,必须增加socket. 服务端框架使用YII 1.1 ...

  2. virtualbox下面安装ubuntu后外网如何远程ssh访问

    这两天在折腾virtualbox安装linux的事情,想多弄几个节点,装hadoop, 环境如下 两台thinkpad, 一台正常上班用的,win7 一台装的ubuntu kylin 16.04, 上 ...

  3. vs2010的“应用程序向导”新建MFC程序报错“当前页面的脚本发送错误”

    原创文章,欢迎阅读,禁止转载. 问题现象不知道从什么时候开始,我的vs2010不能新建MFC程序了,报错如图:... 解决方法根据提示排查,发现是应用程序向导的相关html被损坏了.从同事电脑上把   ...

  4. [fortify] 不安全的函数eregi()

    PHP 5.4/5.3弃用函数eregi() memory_limit绕过漏洞 [日期:2012-04-02] 来源:Linux社区  作者:Linux [字体:大 中 小]   发布日期:2012- ...

  5. 基于Django的web开发

    github地址:https://github.com/shirleyandgithub/PythonWeb

  6. ContentProvider要点复习

    ContentProvider要点复习 ContentProvider作为四大组件之一,发挥着举足轻重的作用.与之相关联的另外两个类分别是ContentResolver和ContentObserver ...

  7. 【算法与数据结构】二叉搜索树的Java实现

    为了更加深入了解二叉搜索树,博主自己用Java写了个二叉搜索树,有兴趣的同学可以一起探讨探讨. 首先,二叉搜索树是啥?它有什么用呢? 二叉搜索树, 也称二叉排序树,它的每个节点的数据结构为1个父节点指 ...

  8. #笔记# 移动前端开发之viewport

    一般移动设备的浏览器都默认设置了一个 viewport ,并初始定义一个虚拟的layout viewport(布局视口),用于解决早期的页面在手机上显示的问题.下面我们来认识几个与 viewport  ...

  9. wpf 报错: 在 AddNew 或 EditItem 事务过程中不允许“DeferRefresh”。

    今天修改Bug的时候遇到一个问题: datagrid 设置了双击事件,双击弹出一个窗口,在多次点击后报错:在 AddNew 或 EditItem 事务过程中不允许“DeferRefresh” 网上查了 ...

  10. Mac下git命令自动补全

    当我第一次在mac上安装git,[tab]补全装成功了,但是我没有记录,当我过一段时间在重装的时候,我已经忘记了,又是各种查资料,再次做一下简单的记录. 首先,我因为还是mac小白,所以使用Homeb ...