SSH远程访问

一 SSH远程管理介绍

SSH(Secure Shell)是一种安全通道协议,主要用来实现字符界面的远程登录,远程复制等功能。与早期的telnet、rsh、rcp、等相比,安全性更高

·SSH协议

为客户机提供安全的Shell环境,用于远程管理

默认端口:TCP 22

·OpenSSH

服务名称:sshd

服务端主程序:/usr/sbin/sshd

客户端主程序:/usr/bin/ssh

服务端配置文件:/etc/ssh/sshd_config

客户端配置文件:/etc/ssh/ssh_config

二 配置OpenSSH服务端

在RHEL 5系统中已默认安装了SSHD服务,并已经添加为了标准的系统服务

查看提供服务的安装包,服务端程序由server提供

查看服务运行状态

查看服务的运行级别

打开服务端主配置文件(初学者可以不用修改任何配置项,直接使用默认配置进行远程连接)

·服务监听选项

#Port 22                    默认监听端口号,如果要更改去掉注释修改端口号即可

#Protocol 2,1                默认协议版本为2,2比1更安全,这里默认不修改

#ListenAddress 0.0.0.0        默认监听所有服务器网卡地址,可以指定地址提高隐蔽性

#UseDNS no                默认开启了DNS返向解析,这里要去掉注释并禁用

·用户登录控制

默认是允许拥有合法的登录shell的用户都可以远程登录,很不安全,这里建议禁用root用户,使用普通用户登录后在使用su命令切花到root用户;还可以禁用某些用户或IP的登录

#PermitRootLogin yes            默认允许root用户登录,这里禁用掉

#LoginGraceTime 2m            默认登录验证时间为2分钟,超时后还未登录则断开连接

#MaxAuthTries 6                默认重试登录次数为6次,超过次数后还未登录则断开连接

#PermitEmptyPasswords no        默认不允许空密码用户登录

使用AllowUsers或DenyUers语句可以限制某些用户登录额登录,但是两者不能同时出现如

AllowUsers jerry admin@61.23.24.25        紧允许jerry、admin登录并admin只能使用61.23.2.25时才能登录;多个用户之间使用空格

·登录验证方式

登录验证对象:本地用户

登录验证方式:密码验证、密钥对验证

密码验证:以服务器中的本地用户等用户名和密码进行验证;这样的方式客户端连接时可能连接的服务器会被假冒,从而泄露密码;而服务器会遭到暴力破解的危险,防御力弱

密钥对验证:如果是linux客户端验证的话先在linux客户端创建一对密钥对文件,包括公钥和私钥,然后将公钥放到服务器指定的位置,然后拥有私钥的客户端就可以直接连接上,没有私钥的客户端无法连接;对于安全性较高的用户可以禁用密码验证,只开启密钥验证;默认两者都是开启的,默认即可

#PasswordAuthentication yes                    启用密码验证

#PubkeyAuthentication yes                    启用密钥对验证

#AuthorizedKeysFile .ssh/authorized_keys    指定公钥数据库文件

三 使用SSH客户端程序

RHEL 5系统中,OpenSSH客户端由openssh-client软件包提供,默认已安装;其中包括远程登录命令、远程上传和下载命令;windows系统中也有支持SSH协议的软件提供图形化界面可以使用

·Linux客户端命令程序ssh、scp、sftp

1使用密码验证的ssh远程登录(还没有创建密钥对)

或,两种命令格式都可以远程登录

当用户第一次登陆SSH服务器时必须接受服务器发送来的RSA密钥;接受的密钥信息将被保存在~/.sh/known_hosts文件中;若服务器修改了默认登陆端口,则使用-p指定端口登陆:

2使用 scp命令远程上传和下载

上传:上传使用的登录用户对目标目录必须有写入权限,才能上传;这里上传到用户的宿主目录

下载:下载使用的登录用户对下载的文件必须要有读取权限

3使用sftp命令利用SSH安全连接服务器进行上传和下载

和FTP类似的登录过程和交互式环境

·windows客户端使用图形工具PuTTYCNN、WinSCP

1使用PuTTYCnN远程登录

一款跨平台的Telnet/SSH图形客户端软件;下载网站www.chiark.greenend.org.uk;绿色软件,直接运行主程序putty.exe

输入SSH服务器地址,单机Open

第一次登录会询问是否接受密文传输,选择是;再输入用户名和密码即可登录,退出使用exit命令

2使用WinSCP远程上传和下载

一款Windows平台的SCP、SFTP图形客户端软件;官网http://winscp.net

首先安装程序(也有绿色版);然后启动桌面上的程序

输入服务器地址,用户名和密码,然后点击登录

第一次登录会询问是否接受密文传输,选择是

连接成功,直接拖拽文件即可上传下载

3使用sftp工具(和linux客户端sftp命令类似)

绿色版的,双击打开程序,输入登录命令;使用ftp上传下载命令即可

程序在哪里运行的,下载目录就是哪里;对于要上传的文件可以放在程序目录下,使用相对路径上传

三 构建密钥对验证的SSH体系

·SSH密钥对验证图解

·linux的SSH密钥对验证操作

1在linux客户端创建密钥对

使用ssh-keygen命令,为当前用户创建密钥对文件,包括公钥和私钥;使用-t选项指定算法类型,可用的算法类型有PSA和DSA;(密钥文件默认保存在当前用户的宿主目录下的隐藏文件.ssh目录下)

确认生成的密钥文件

2将公钥文件上传至服务器指定目录并重命名为authorized_keys(必要条件)

任何方式均可(共享、FTP、Email、SCP、……)

方法一:使用scp命令上传,然后登陆服务器修改文件

方法二:有一条专门的上传命令,以上步骤全部搞定(服务器必须启用密码验证)

3客户端使用密钥对验证登陆

如果没有设置密钥短语,则直接验证登陆

·windows的SSH密钥对验证操作

由于windows客户端创建密钥对没有linux方便,因此如果使用windows密钥对验证登陆,就需要在linux服务器上创建密钥对

1在SSH服务器上切换到普通用户创建密钥对

2将公钥改名为authorized_keys,将私钥拷贝到windows客户端

3使用puttygen工具将私钥转换成windows能识别的文件

1)打开puttygen.exe.点击load

2)选中拷贝过来的私钥文件

3)选中私钥另存为,将转换后的私钥存在自定义位置

4使用PuTTYCNN客户端的密钥验证方式远程登录SSH服务器

1)打开putty.exe,输入服务器地址

2)点击左侧的SSH,展开之后找到auth,然后点击右侧的浏览,选中转换后的私钥

3)然后返回Session界面,点击Open登录;然后输入用户名之后直接会密钥验证登录