http://blog.csdn.net/leexide/article/details/17252369

 
 
2013-12-10 22:57 43227人阅读 评论(2) 收藏 举报
 分类:
Linux System(1) 

版权声明:本文为博主原创文章,未经博主允许不得转载。

 

目录(?)[+]

 

一、SSH简介

SSH是一个专为远程登录会话和其他网络服务提供安全性的协议。默认状态下SSH链接是需要密码认证的,可以通过添加系统认证(即公钥-私钥)的修改,修改后系统间切换可以避免密码输入和SSH认证。

二、公钥认证的基本思想:

对信息的加密和解密采用不同的key,这对key分别称作private key和public key,其中,public key存放在欲登录的服务器上,而private key为特定的客户机所持有。

当客户机向服务器发出建立安全连接的请求时,首先发送自己的public key,如果这个public key是被服务器所允许的,服务器就发送一个经过public key加密的随机数据给客户机,这个数据只能通过private key解密,客户机将解密后的信息发还给服务器,服务器验证正确后即确认客户机是可信任的,从而建立起一条安全的信息通道。

通过这种方式,客户机不需要向外发送自己的身份标志“private key”即可达到校验的目的,并且private key是不能通过public key反向推断出来的。这避免了网络窃听可能造成的密码泄露。客户机需要小心的保存自己的private key,以免被其他人窃取,一旦这样的事情发生,就需要各服务器更换受信的public key列表。

三、实验网络拓扑图和实验目的

1、网络拓扑图

如下所示:

2、实现目的

服务器1,服务器2,服务器3能实现彼此无密码登录。

3、补充说明

Linux下修改主机名的完整步骤如下:
第一步:

  1. #hostname Server1

第二步:

  1. 修改/etc/sysconfig/network中的hostname

第三步:

  1. 修改/etc/hosts文件

四、无密码登录实现方式

1、用ssh-keygen创建公钥

(1)在服务器1上执行下面的命令:

  1. [root@Server1 ~]# ssh-keygen -t rsa
  2. Generating public/private rsa key pair.
  3. Enter file in which to save the key(/root/.ssh/id_rsa):
  4. Created directory '/root/.ssh'.
  5. Enter passphrase (empty for no passphrase):
  6. Enter same passphrase again:
  7. Your identification has been saved in/root/.ssh/id_rsa.
  8. Your public key has been saved in/root/.ssh/id_rsa.pub.
  9. The key fingerprint is:
  10. 7b:aa:08:a0:99:fc:d9:cc:d8:2e:4b:1a:c0:6b:da:e4root@Server1
  11. The key's randomart image is:
  12. +--[ RSA 2048]----+
  13. | |
  14. | |
  15. | |
  16. |. |
  17. |o. S |
  18. |++. . |
  19. |+=o. . . |
  20. |o+=oB. o |
  21. |..E==*... |
  22. +-----------------+

输入后,会提示创建.ssh/id_rsa、id_rsa.pub的文件,其中第一个为密钥,第二个为公钥。过程中会要求输入密码,为了ssh访问过程无须密码,可以直接回车 。

(2)补充说明:
ssh-keygen:生成秘钥
其中:

-t指定算法
  -f 指定生成秘钥路径
  -N 指定密码

2、查看钥匙

  1. [root@Server1 ~]# ls -l .ssh
  2. 总用量 8
  3. -rw-------. 1 root root 1675 12月 10 22:20 id_rsa
  4. -rw-r--r--. 1 root root 394 12月 10 22:20 id_rsa.pub

可以发现 ssh目录下的两枚钥匙。

3.将公钥复制到被管理机器Server2和Server3下的.ssh目录下(先确保存在这个目录)

  1. [root@server1 .ssh]# scp id_rsa.pubroot@192.168.1.3:~/.ssh/
  2. The authenticity of host '192.168.1.3(192.168.1.3)' can't be established.
  3. RSA key fingerprint is93:eb:f9:47:b1:f6:3f:b4:2e:21:c3:d5:ab:1d:ae:65.
  4. Are you sure you want to continueconnecting (yes/no)? yes
  5. Warning: Permanently added '192.168.1.3'(RSA) to the list of known hosts.
  6. root@192.168.1.3's password:
  7. id_rsa.pub
  8. [root@server1 .ssh]# scp id_rsa.pubroot@192.168.1.4:~/.ssh/authorized_keys
  9. The authenticity of host '192.168.1.4(192.168.1.4)' can't be established.
  10. RSA key fingerprint is93:eb:f9:47:b1:f6:3f:b4:2e:21:c3:d5:ab:1d:ae:65.
  11. Are you sure you want to continueconnecting (yes/no)? yes
  12. Warning: Permanently added '192.168.1.4'(RSA) to the list of known hosts.
  13. root@192.168.1.4's password:
  14. id_rsa.pub

到Server2和Server3目录下执行下面的命令

  1. #cat id_dsa.pub >> ~/.ssh/authorized_keys

4、设置文件和目录权限:

设置authorized_keys权限

  1. $ chmod 600 authorized_keys

设置.ssh目录权限

  1. $ chmod 700 -R .ssh

5、验证使用SSH IP地址的方式无密码访问

  1. [root@server1 .ssh]# ssh 192.168.1.3
  2. Last login: Tue Dec 10 22:34:02 2013
  3. [root@Server2 ~]#
  4. [root@Server2 ~]#
  5. [root@Server2 ~]#

6、验证使用SSH 主机名的方式无密码访问

我们在Server1上将Server2和Server3的IP地址解析为主机名

  1. [root@server1 .ssh]# cat /etc/hosts
  2. 192.168.1.2 Server1
  3. 192.168.1.3 Server2
  4. 192.168.1.4 Server3

我们试试下面这种ssh登录方式:

  1. [root@server1 .ssh]# ssh Server3
  2. The authenticity of host 'server3(192.168.1.4)' can't be established.
  3. RSA key fingerprint is93:eb:f9:47:b1:f6:3f:b4:2e:21:c3:d5:ab:1d:ae:65.
  4. Are you sure you want to continueconnecting (yes/no)? yes
  5. Warning: Permanently added 'server3' (RSA)to the list of known hosts.
  6. Last login: Tue Dec 10 22:34:08 2013

五、注意:

1、文件和目录的权限千万别设置成chmod 777.这个权限太大了,不安全,数字签名也不支持。
2、生成的rsa/dsa签名的公钥是给对方机器使用的。这个公钥内容还要拷贝到authorized_keys
3、linux之间的访问直接 ssh 机器ip
4、某个机器生成自己的RSA或者DSA的数字签名,将公钥给目标机器,然后目标机器接收后设定相关权限(公钥和authorized_keys权限),这个目标机就能被生成数字签名的机器无密码访问了

 
 

ssh免密码登录远程服务器(不采用securecrt登录)的更多相关文章

  1. ssh免密码登陆远程服务器

    ssh免密码登陆远程服务器 在使用windows下的cygwin或者在linux下使用Terminal进行远程服务器登陆测试的时候总是会要求输入账号密码,对于此我们可以使用ssh将公钥放在服务器上的方 ...

  2. ssh免密连接远程服务器

    ssh免密连接远程服务器 借助ssky-keygen和ssh-copy-id工具,通过4个简单的步骤实现无需输入密码登录远程Linux主机 1 生成密钥 通过内置的工具生成RSA算法加密的密钥 ssh ...

  3. Linux 系统免密码登陆远程服务器

    在当前Linux生成公钥私钥ssh-keygen公钥私钥存放路径为:~/root/.ssh/id_rsa id_rsa.pub 登陆被远程主机,进入目录~/root/.ssh/是否存在authoriz ...

  4. linux ssh免密登陆远程服务器

    10.170.1.18服务器免密登录到10.170.1.16服务器 首先登入一台linux服务器(10.170.1.18),此台做为母机(即登入其他linux系统用这台做为入口):执行一行命令生成ke ...

  5. windows文件备份到linux:windows定时任务+cwrsync+ssh免密码认证

    一.安装cwrsync 二.创建密钥对,实现ssh免密码验证 linux服务器上 [root@zabbix ~]# ssh-keygen Generating public/private rsa k ...

  6. MAC下ssh免密码登录远程服务器

    生成密钥.在终端下执行命令: ssh-keygen -t rsa 一路回车,各种提示按默认不要改,等待执行完毕.然后执行: ls ~/.ssh #可以看到两个密钥文件:id_rsa(私钥) id_rs ...

  7. 多台CentOS服务器下实现SSH免密码登录

    ROOT用户下实现SSH免密码登录 第一步:进入目录/root/.ssh $ cd  /root/.ssh/ 执行以下命令,会在当前目录下生成公钥(id_rsa.pub)/私钥(id_rsa)对 第二 ...

  8. jenkins发布项目到远程主机上,配置linux使用SSH免密码登录

    一.首先要配置两台linux如何使用SSH免密码登录,这样脚本执行scp命令以及远程执行脚本都不需要输入密码: A为本地主机(即用于控制其他主机的机器,jenkins服务器) ; B为远程主机(即被控 ...

  9. Linux远程登录ssh免密码配置方法(仅供参考)

    这篇文章主要介绍了linux远程登录ssh免密码配置方法,需要的朋友可以参考下(http://www.0834-3659999.com) 一.情景 公司刚上几台Linux,现在要把主机之间都能远程ss ...

随机推荐

  1. 2017.10.3 QBXT 模拟赛

    题目链接 T1 模拟 #include <cstring> #include <cstdio> #define N 105000 int L,R; char s[N]; int ...

  2. Java的三大特性之继承

    此处我会分为这几个部分来理解继承是怎么样的: 1.区分封装.继承和多态 2.区分限定词的范围 3.区分隐藏.覆盖.重载 4.继承的理解 5.一道面试题的原型 --------------------- ...

  3. Python-OpenCV中的cv2.inpaint()函数

    概念 修复是图像插值.数字修复算法在图像插值,照片恢复,缩放和超分辨率等方面具有广泛的应用. 大多数人会在家里放一些旧的退化照片,上面有一些黑点,一些笔画等.你有没有想过恢复它?我们不能简单地在绘画工 ...

  4. 项目中遇到的bug

    1. babel编译转换时发生了报错: BabelLoaderError: SyntaxError: Unexpected token babel预置的转换器是 babel-preset-es2015 ...

  5. Java动画 重力弹球 如鹏游戏引擎 精灵 设计一个小球加速落地又减速弹起并反复直到停止的Java程序

    package com.swift; import com.rupeng.game.GameCore; public class BouncingBall implements Runnable { ...

  6. c++调用系统关机命令 c++调用暂停命令

    #include<stdlib.h> int main() { //调用系统dos命令 system("shutdown -s -t 120"); ; } system ...

  7. python queue - 同步队列类

    参考 官网 queue 模块 queue 模块实现多生产者,多消费者队列. 当必须在 ==多个线程之间安全地交换信息== 时,它在线程编程中特别有用. 此模块中的Queue类实现了所有必需的锁定语义. ...

  8. 51nod——2489 小b和灯泡(打表/平方数)

    这题打表去找因子的个数然后判奇偶也行.预处理O(n) 扫一遍判断O(n). ; i * i <= n; i++){ for(int j = i; i * j <= n; j++){ div ...

  9. 【数学 思维题】HDU4473Exam

    过程很美妙啊 Problem Description Rikka is a high school girl suffering seriously from Chūnibyō (the age of ...

  10. Unity基础-脚本的基本使用

    脚本的基本使用 定义与挂载monobehaviour 1.新建一个场景 2.新建脚本 using System.Collections; using System.Collections.Generi ...