正在浏览 SSHD 里的文章

●利用SecureCRT/PUTTY工具生成public/private key
→SecureCRT生成public/private key
→在linux配置SecureCRT生成的public key
→配置SecureCRT的SSH2 PublicKey连接
→PUTTY生成public/private key
→在linux中配置PUTTY生成的public key

这里所说的Windows下通过证书验证登陆SSH实际上是在Windows系统下使用SSH终端程序(SecureCRT,PUTTY等)的证书验证方式连接到远程服务器的SSH服务。我们都知道,在linux系统下各个服务器通过SSH无密码登陆的方法,但在Windows下的SSH连接却很少有人介绍。实际上Linux下的无密码登陆SSH使用的就是证书验证的方法,linux命令行下可以使用openssl所提供的ssh-keggen命令很方便的生成SSH 验证key,也就是public/private key。但windows下没有系统集成的命令,我们可以使用SecureCRT或PUTTY提供的key生成工具来生成本机的public/private key,多余的不讲了,下面介绍操作步骤:

利用SecureCRT/PUTTY工具生成public/private key

SecureCRT生成public/private key

image

选择工具中的创建公共key

image

Key生成向导

image

选择key类型

image

确认key的保护密码和相关注释

image

Key长度

image

生成key

image

Key兼容格式

image

是否将刚刚生成的可以用于全局公共key,选是

查看SecureCRT的全局配置的SSH2段,如下图:

image

SSH2全局配置

至此为止利用SecureCRT生成key的步骤已经完成。

配置SecureCRT的SSH2 PublicKey连接

由于SecureCRT的key生成工具与软件的集成度很高,生成完key之后,就已经可以在全局配置中看到了相关的信息,如上面的图。需要注意的就是每个session的设置了,可以查看具体session的配置,如下图:

image

单个sessionSSH2配置

image

选中Publickey后点击Properties按钮出现的对话框

这个对话框与全局设置时一致的,因此不必做过的的设置。

在linux配置SecureCRT生成的public key

SecureCRT的key生成工具会生成两个文件,一个为私钥(Identity)一个公钥(Identity.pub)。私钥是本机的一个标识。也就是机器的唯一标识符,而公钥则是与私钥配对生成的。我们要做的是将本机的公钥文件复制到我需要SSH连接的服务器上,这样当我么使用私钥连接远程服务器时,远程服务器的SSH程序会将连接过来的主机私钥与存在本地的公钥做一个对比,如果匹配则说明验证成功,允许连接。

将本机公钥内容复制到linux服务器~/.ssh/目录下的authorized_keys文件中即可。如下步骤:

1、打开Identity.pub文件复制内容

2、粘贴到~/.ssh/目录下的authorized_keys文件中。注意Identity.pub的内容复制到哪个用户的.ssh/authorized_keys文件中,则用SecureCRT登陆的时候就需要使用哪个用名,否则SSH可不知道到哪里去找public key。

3、修改远程服务器/etc/ssh/sshd_config 文件

RSAAuthentication yes

PubkeyAuthentication yes

AuthorizedKeysFile .ssh/authorized_keys

PasswordAuthentication no

4、重启sshd服务

5、查看SSH验证记录

sshd[95]: Accepted publickey for root from 192.168.103.116 port 1453 ssh2

sshd[95]: pam_unix(sshd:session): session opened for user root by (uid=0)

看到红色标记出来的文字了吧,SSHD服务接受了证书验证,并且为root用户打开了session。

PUTTY生成public/private key

PUTTY安装后会在目录下会有一个名为PUTTYGEN.EXE的可执行程序,该程序就可以生成key,下面介绍操作步骤:

image

这就是生成key的对话框,相关参数与SecureCRT的工具类似,不过需要注意一下生成key的过程。有些另类,当用户点击Generate按钮后需要在对话框中移动鼠标,这时候用户会根据用户的鼠标移动坐标来生成key这种生成可以的方法与随机生成还是有些区别的!如下图:

image

生成key后出现如下对话框

image

在这里可以选择key的保护密码,写一些key注释等。Save public key 和Save private key分别保存公钥和私钥。

这里我将public保存为putty.pub,private保存为putty.pri

在linux中配置PUTTY生成的public key

其实方法与上面介绍的SecureCRT的类似,只不过有一些小小的出入。经过PuTTY key Generator工具生成的putty.pub(公钥)文件与linux下openssh识别的有些出入,不过修改一下就可以了,如下是PuTTY生成的公钥样例:

---- BEGIN SSH2 PUBLIC KEY ----

Comment: "rsa-key-20100311"

AAAAB3NzaC1yc2EAAAABJQAAAIEAnfJWj79sJn0l3fvb7lc4OJC85/RR5RI+okj+

TvFbbD5ZZ6B3tmO2fqL1SwxK7iZPB23fRgouNsFPnLnM+sPjdEApfzm9VDF4VE1O

0Ge9k1uflvMdgqJbNkZ8ce0AwYgnqCXgTBGlcaIpXK44uUxi7k26xG0tgfn4zeCG

Ez9zxsU=

---- END SSH2 PUBLIC KEY ----

修改为

ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAIEAnfJWj79sJn0l3fvb7lc4OJC85/
RR5RI+okj+TvFbbD5ZZ6B3tmO2fqL1SwxK7iZPB23fRgouNsFPnLnM+sPjdEA
pfzm9VDF4VE1O0Ge9k1uflvMdgqJbNkZ8ce0AwYgnqCXgTBGlcaIpXK44uU
xi7k26xG0tgfn4zeCGEz9zxsU= test@test

将修改后的内容复制到linux系统中的authorized_keys文件即可。注意上面的是没有空行的。

SSH所做的修改上文已经提到,这里不再介绍。

配置PuTTY的SSH2 PublicKey连接

image

选择私钥文件

image

Auto-login中输入用户

image

至此Windows下利用证书连接SSH服务的内容已经介绍完毕,希望各位看官有些帮助。有问题可以留言或邮件给我。

原创文章,转载请注明: 转自 http://salogs.com

1、简介:
    大多数人知道SSH是用来替代R命令集,用于加密的远程登录,文件传输,甚至加密的FTP(SSH2内置),因此SSH成为使用极广的服务之一,不仅如此,SSH还有另一项非常有用的功能,就是它的端口转发隧道功能,利用此功能,让一些不安全的服务象TCP、POP3、SMTP、FTP,LDAP等等通过SSH的加密隧道传输,然后,既然这些服务本身是不安全的,密码和内容是明文传送的,通过使用SSH隧道传输的话再想在其中间监听也是徒劳无功的了。本文主要介绍通过SSH隧道连接远程Mysql服务器,SSH隧道更详细的文章参见:官方关于SSH隧道的介绍文章

2、使用Windows客户端连接

下面介绍使用windows系统下比较流行的MySQL终端工具SQLyog Enterprise,通过SSH隧道连接Mysql服务器。如下图:

SQLyog_Enterprise_new_connection.png
新建连接

SQLyog_Enterprise_Mysql_TAB.png
MySQL标签页

SQLyog_Enterprise_SSH_TAB.png
SSH标签页

3、linux命令行下使用ssh命令建立SSH隧道

mysql服务器地址为:192.168.99.52
本机地址为:192.168.99.91

前提
将本机的ssh public key复制到mysql服务器中,也就是将本机的id_rsa.pub内容添加到mysql服务器的~/.ssh/authorized_keys文件中。我这里用命令实现。

利用 ssh-keygen 命令 生成本机id_rsa.pub文件
# ssh-keygen 连续回车生成id_rsa.pub 文件

将id_rsa.pub文件复制到mysql服务器中
# ssh-copy-id -i ~/.ssh/id_rsa.pub 192.168.99.52

开始挖隧道
利用ssh命令在本机开个3388的端口,这个端口为隧道的入口端口,也就是说我一会儿通过在本机连接这个端口来达到连接mysql服务器3306端口的目的。使用命令如下:

ssh -NCPf root@192.168.99.52 -L 3388:192.168.99.52:3306

参数解释

-C    使用压缩功能,是可选的,加快速度。
-P    用一个非特权端口进行出去的连接。
-f    一旦SSH完成认证并建立port forwarding,则转入后台运行。
-N    不执行远程命令。该参数在只打开转发端口时很有用(V2版本SSH支持)

这里的root@192.168.99.52 是登陆mysql服务器的SSH用户名和IP地址-L 3388:192.168.99.52:3306 这个参数的意思是说在本机开放3388端口到192.168.99.52:3306端口的映射,也就是说隧道的入口为3388出口为mysql服务器的3306

执行完后查看本地连接情况
# netstat -tulnp | grep 3388
tcp    0    0 127.0.0.1:3388    0.0.0.0:*    LISTEN    14273/ssh
tcp    0    0 ::1:3388    :::*    LISTEN    14273/ssh

查看本机与mysql服务器的ssh连接情况
# netstat -an | grep 192.168.99.52
tcp    0    0    192.168.99.91:7612    192.168.99.52:9698    ESTABLISHED

通过这两条命令可知,执行完命令之后,本机与mysql服务器就建立起了ssh连接,且开放了3388端口。

通过隧道连接MySQL服务器

# mysql -u dbname -P 3388 -h 127.0.0.1 -pdbpwd
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 52562
Server version: 5.1.31-log Source distribution

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

dbname@192.168.99.52 [(none)] >show databases;
image
4 rows in set (0.00 sec)

连接成功!