一、前言

1. 环境

  • 客户端系统:win7
  • securecrt版本:6.0.2
  • 服务端系统:centos6.5
  • 服务端ssh实现:openssh

2. 关于认证方式

我们知道ssh一般都会提供多种客户端认证方式,其中最常用的是密码和公钥认证方式,本篇主要讨论公钥认证方式。有关客户端认证的过程与原理,可以看另一篇文章:ssh的发展历程与基本原理

二、使用公钥认证登陆的优点

1、公钥认证允许使用空密码,省去每次登录都需要输入密码的麻烦

2、多用户管理服务器时,可以通过多个公钥登录同一用户下,可以避免因为密码认证被用户都需要密码,导致的密码容易泄密的危险。并且使用passwd修改密码,也不会影响到其他用户的登录。

3、做空密码的公钥认证,为运维自动化提供了便捷方法。

三、生成公钥和私钥

以下是使用securecrt生成公钥和私钥的主要步骤,不用修改的界面就不放出来了,直接点下一步就是了。

选择公钥的类型为RSA:

因为我们不想输入通行密码,所以密码直接留空,注释框写上自己想标注的内容就行了:

到了这一步,就是生成公钥的时候了,注意框出来的内容,securecrt在生成公钥的时候会根据鼠标的移动数据作为随机的因素去生成,如果你到了这个界面切到别的地方去了,可能回来的时候发现进度条还没动过。

key的格式选OpenSSH,完成。

生成有两个文件,一个公钥文件(Identity.pub)一个私钥文件(Identity),需要把Identity.pub的内容追加到服务器的文件~/.ssh/authroized_keys中,如果.ssh目录不存在,就创建一个:

mkdir ~/.ssh
chmod ~/.ssh
touch ~/.ssh/authroized_keys
chmod ~/.ssh/authroized_keys

注意:.ssh 目录的权限必须是0700,.ssh/authorized_keys 文件权限必须是0600,否则公钥认证不会生效。

四、服务端设置

我们想达成的目的有:

  • 让客户端免密登陆
  • 禁止客户端密码登陆
  • 修改默认端口,避免外部攻击

1. 修改配置文件/etc/ssh/sshd_config

Port
PermitRootLogin yes
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
PasswordAuthentication no

2. 重启sshd服务

service sshd restart

3. 如果有开防火墙,还需要修改防火墙配置

打开防火墙配置文件/etc/sysconfig/iptables,找到原来22端口的配置:

-A INPUT -p tcp -m state --state NEW -m tcp --dport  -j ACCEPT

把22改成你想要改成的端口,这里是1357,修改完保存配置并重启防火墙。

service iptables restart

关于iptables的原理和基本用法,有兴趣可以看看另外一篇:深入浅出iptables

五、登陆服务器

建立连接,把公钥选项提前,并去掉密码登陆选项,然后点开公钥的属性选项。

选择使用会话公钥设置,然后选择自己的私钥文件,ok。

如果是第一次连接,会提示你去辨别是否接受这个新的host key,选接受并保存。

然后就可以直接登陆服务器了。

六、总结及注意

本文主要简述从securecrt生成公钥/密钥到免密登陆服务器的过程,总体来说比较简单。

不过有的细节不注意就可能导致失败,譬如:

  • 客户端和服务端的ssh版本对不上
  • 生成key的类型不对
  • 服务端.ssh目录或者授权文件的权限不对
  • 服务器sshd配置修改错误或者修改完没有重启sshd服务
  • 防火墙配置没有修改,或者没有重启防火墙

七、参考

1. ssh 公钥认证方式登录

2. ssh配置公钥私钥登录SecureCRT

(完)

securecrt免密码登录的更多相关文章

  1. ssh免密码登录、secureCRT免密码登录详解

    再放一张真机实现图: 接下来就详细讲述实现细节. 实现过程中吃了不少苦头,这个不对,那个不通.好在慢慢一点点摸索出来了,经验分享在这里. 希望能终结网上ssh免密码登录,以及SecureCRT免密码登 ...

  2. Ubuntu使用ssh公钥实现免密码登录

    ssh 无密码登录要使用公钥与私钥.linux下可以用用ssh-keygen生成公钥/私钥对,下面我以Ubuntu为例. 有机器A(10.0.2.1),B(10.0.2.100).现想A通过ssh免密 ...

  3. Linux使用ssh公钥实现免密码登录Linux

    ssh 无密码登录要使用公钥与私钥.linux下可以用用ssh-keygen生成公钥/私钥对,下面我以CentOS为例.有机器A(192.168.1.155),B(192.168.1.181).现想A ...

  4. ssh免密码登录机器(使用公钥和秘钥进行加密来实现)

    ssh 无密码登录要使用公钥与私钥.linux下可以用用ssh-keygen生成公钥/私钥对,下面我以CentOS为例. 登录的原理: 有机器A(192.168.1.155),B(192.168.1. ...

  5. ssh配置免密码登录

    日常工作中很多情况下都需要登录服务器进行管理,一般都是用ssh进行连接,为了防止密码外泄,可以配置下ssh的免密码登录. 首先服务器两台: A:43.224.34.* B:104.238.161.* ...

  6. CentOS配置SSH免密码登录后,仍提示输入密码

    CentOS配置SSH无密码登录需要3步: 生成公钥和私钥 导入公钥到认证文件,更改权限 测试 1.生成公钥和私钥 ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa 默 ...

  7. ssh 免密码登录

    1.在本机下生成公钥/私钥对. ssh-keygen -t rsa -P '' -P表示密码,-P '' 就表示空密码,也可以不用-P参数,这样就要三车回车,用-P就一次回车.它在/home/yaoy ...

  8. Mac下到Linux主机ssh免密码登录

    最近忙得忘乎所以,写篇博客放松放松,RT,直接上命令好了 # Local ssh-keygen -t rsa scp ~/.ssh/id_rsa.pub username@server:~/.ssh/ ...

  9. 如何配置ssh免密码登录

    [TOC] 如果你在管理一堆unix机器,每次登录都要输入密码是挺烦的事情,一方面为了安全我们一般不会将所有机器的密码都设置成一样,另一方面就算一样每次都输入一遍也很麻烦. 这种情况下我们一般是用ss ...

随机推荐

  1. oracle 之 控制oracle RAC 进行并行运算

    RAC的一大优点就是可以跨节点进行并行计算,那么如何控制并行运算?这就是这篇文章要讨论的内容. 10 g 中: 合理设置跨节点并行,需要先设置一些参数:instance_groups:这个参数主要是设 ...

  2. 6.Python使用Pandas小案例

    1.使用以下命令引入Pandas和xlrd,引入成功后在pycharm的setting导入即可使用(pip3是由于个人python版本为3.6)==在dos命令行输入以下信息 pip3 install ...

  3. GOF23设计模式之策略模式(strategy)

    一.策略模式概述 策略模式对应于解决某一个问题的一个算法族,允许用户从该算法族中任选一种算法解决一个问题,同时可以方便的更换算法或者增加新的算法.并且由客户端决定调用哪个算法. 策略模式的本质: 分离 ...

  4. 笔记:LNK2001不代表链接器真的需要链接相关符号

    环境:VS2008   我们都知道,链接器在生成可执行程序时,会忽略那些没有用到的符号.但是昨天遇到一个链接问题,看起来与这条基本策略并不相符.首先看一个静态链接库的结构:   lib | |---- ...

  5. (转)SQL server 2005查询数据库表的数量和表的数据量

    本文转载自:http://hi.baidu.com/ajyajyajy/item/4e2a7f4dc83393d2c1a592c1 use DBNAMEgoselect * from sysobjec ...

  6. buntu12.10 64位 + android-ndk-r9 编译ffmpeg遇到的问题

      android-ndk-r8d/build/core/build-binary.mk:41: *** target file `clean' has both : and :: entries.  ...

  7. date.js

    /** * 此JS文件是格式化JS中日期时间的工具类,其中包含了传入日期对象Date,格式化成想要的格式,<br> * 或者传入字符串格式的时间个,次字符串日期对应的格式可以转换为相应的日 ...

  8. python查找字符串 函数find() 用法

    sStr1 = 'abcdefg' sStr2 = 'cde' print sStr1.find(sStr2) 输出 2意思是在sStr1字符里的第2位置找到了包含cde字符的字段

  9. java web 程序---登陆验证4个页面

    思路: 1.第一个是登陆页面login.jsp一个form表单.点击登陆按钮 2.第二个是验证页面check.jsp.如果username和password都正确.则跳转到另一个页面a.jsp显示登陆 ...

  10. 《C++ Primer》读书笔记

    在C++中,基类必须指出希望派生类重新定义哪些函数,定义为virtual的函数是基类期待派生类重新定义的,基类希望派生类继承的函数不能定义为虚函数. 引用和指针的静态类型与动态类型可以不同,这是C++ ...