SSH协议
SSH是一种协议,实现计算机之间的加密登录,即使被截获,截获的也只是加密后的密文,不会泄密。
如果每次登录另外一台计算机,都需要输入密码,就显得太麻烦,所以SSH协议实现了无密码登录,即公钥登录。所谓公钥登录,就是用户先把自己的公钥发给远程主机存储起来,登录时,远程主机向登录主机发送一个随机的字符串,登录主机用自己的私钥加密后发给远程主机,远程主机用登录主机的公钥解密,如果成功,则说明是可信的,不需要输入密码就可以登录。
如果主机A和B想实现相互之间的无密码登录,操作步骤如下:
1. 分别生成密钥
ssh-keygen -t rsa
一直回车,会在/home/${username}/.ssh目录下生成公钥(id_rsa.pub)和私钥(id_rsa),将其中的公钥命名为authorized_keys_${hostname}。
2. 主机B使用scp将自己的公钥发到主机A的/home/${username}/.ssh目录下,主机A将自己的公钥和主机B的公钥合并成一个文件authorized_keys:
cat autharized_keys_A >> autharized_keys;
cat autharized_keys_B >> autharized_keys;
并且将authorized_keys发到主机B的/home/${username}/.ssh目录下,这样主机A和B就有了对方的公钥,可以实现无密码登录了。
3. 在主机A使用
ssh B
登录主机B,第一次提示主机B的公钥指纹,是否继续登录。所谓公钥指纹,就是将主机的1024位RSA公钥进行MD5计算,得到一个128位的指纹。如果用户知道登录主机的公钥指纹,就可以核对,如果是正确的,就输入yes,然后输入密码登录。当用户输入yes时,则会将主机的公钥存储在/home/${username}/.ssh/known_hosts中,下次登录时,就不会再有这个提示,而是直接实现无密码登录了。
如果第一次以后仍然要求输入密码,可能是.ssh文件的权限问题,输入:
chown username: /home/username/.ssh
chown username: /home/username/.ssh/*
chmod 700 /home/username/.ssh
chmod 600 /home/username/.ssh/*
改变权限就不会再提示输入密码了。
如果出现:
Agent admitted failure to sign using the key
将私钥加入即可:
ssh-add ~/.ssh/id_rsa
SSH协议的更多相关文章
- Git : SSH 协议服务器
SSH 协议用于为 Git 提供远程读写操作,是远程写操作的标准服务. SSH协议语法格式 对于拥有 shell 登录权限的用户账号,可以用下面的语法访问 Git 版本库: 语法 1 : ssh:// ...
- 何为SSH协议?
该文来自百度百科,自我收藏. SSH 为 Secure Shell 的缩写,由 IETF 的网络小组(Network Working Group)所制定:SSH 为建立在应用层基础上的安全协议.SSH ...
- 【Jsch】使用SSH协议连接到远程Shell执行脚本
如果大家熟悉Linux的话,一定对ssh,sftp,scp等命令非常熟悉,ssh是一个安全协议,用来在不同系统或者服务器之间进行安全连接,SSH 在连接和传送的过程中会加密所有的数据. 但是SSH一般 ...
- ssh 协议执行repo sync 报错:Permission denied (publickey)
1.ssh key 已经添加ssh key到gerrit服务器,并且执行ssh协议的git clone可以正常克隆代码到本地,可见不是ssh key的问题. 2.manifest清单文件配置 最初在m ...
- SSH协议及其应用
SSH协议及其应用 原文作者:阮一峰 链接: http://www.ruanyifeng.com/blog/2011/12/ssh_remote_login.html http://www.ruany ...
- Java 实现 SSH 协议的客户端登录认证方式--转载
背景 在开篇之前,让我们先对 SSH 协议有个宏观的大致了解,这样更有利于我们对本文的加深了解.首先要提到的就是计算机网络协议,所谓计算机网络协议,简单的说就是定义了一套标准和规则,使得不同计算机之间 ...
- SSH2.0编程 ssh协议过程实现
之前为了自己做一套SSH,先自己实现了一套telnet.但经过这么多天的苦逼,发现以前的工作都是徒劳.ssh的协议很繁杂,核心的内容在于密码算法,而且自己很难在网上找到周全的细节讲解与详细的实现,只有 ...
- SSH协议详解(转)
转发的http://blog.csdn.net/macrossdzh/article/details/5691924 很透彻啊,学习了 一.什么是SSH SSH是英文Secure Shell的简写形式 ...
- SSH2.0编程 ssh协议过程实现(转)
SSh协议: 全称为Secure Shell,即很安全的shell,主要目的是用来取代传统的telnet和r系列命令(rlogin,rsh,rexec等)远程登录和远程执行命令的工具,实现远程登录和远 ...
- 基于SSH协议的端口转发
[前言] 最近一直在使用ssh协议的端口转发(隧道)功能,完成对内网空透等.这篇文章将主要讲解3种常用的ssh tunnelling使用方法和基本原理. 在介绍具体内容前,我先奉上端口转发的常用情景: ...
随机推荐
- 图标框架Font Awesome
直接引入Font Awesome的css <!DOCTYPE html> <html lang="en"> <head> <meta ch ...
- jquery 实现table的行列选中效果改进
行列都可以多选,也可对相应数据进行统计: 行选中效果 列选中效果
- 浏览器中回车(Enter)和刷新的区别是什么?[转载]
在浏览器中回车和F5刷新有什么区别那?今天就来说说:浏览器中回车(Enter)和刷新的区别是什么? 这点事. 概论: 1.回车在 Expires有效的时候,是不会去请求服务器的,打开调试看到的请求也只 ...
- mysql查询当前系统时间
第一种方法:select current_date: MySQL> select current_date as Systemtime;+------------+| Systemtime |+ ...
- [Android Pro] 组件化:企业级大型项目必经之路
cp : https://www.csdn.net/article/2011-02-11/291667 摘要:超过一年以上.活跃开发的项目往往到后期陷入了一些共性的问题: 构建速度慢,往往生成一次最终 ...
- crc16.c
static unsigned char auchCRCHi[];static unsigned char auchCRCLo[]; /* CRC 高位字节值表 */static unsigned c ...
- Asp.Net 管道事件注册/HttpApplication事件注册
一.HttpApplication简介 在HttpRuntime创建了HttpContext对象之后,HttpRuntime将随后创建一个用于处理请求的对象,这个对象的类型为HttpApplicati ...
- Hadoop + ZK + HBase 环境搭建
Hadoop 环境搭建 参考资料: http://hadoop.apache.org/docs/r2.4.1/hadoop-project-dist/hadoop-common/ClusterSetu ...
- 洛谷 p1352 没有上司的舞会 题解
P1352 没有上司的舞会 题目描述 某大学有N个职员,编号为1~N.他们之间有从属关系,也就是说他们的关系就像一棵以校长为根的树,父结点就是子结点的直接上司.现在有个周年庆宴会,宴会每邀请来一个职员 ...
- Jackson 教程演示样例
查看原文教程:http://www.ibloger.net/article/275.html Json经常使用的类库例如以下 Jackson:http://jackson.codehaus.org/ ...