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
#ListenAddress 0.0.0.0
#UseDNS no
·用户登录控制
默认是允许拥有合法的登录shell的用户都可以远程登录,很不安全,这里建议禁用root用户,使用普通用户登录后在使用su命令切花到root用户;还可以禁用某些用户或IP的登录
#PermitRootLogin yes
#LoginGraceTime 2m
#MaxAuthTries 6
#PermitEmptyPasswords no
使用AllowUsers或DenyUers语句可以限制某些用户登录额登录,但是两者不能同时出现如
AllowUsers jerry admin@61.23.24.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登录;然后输入用户名之后直接会密钥验证登录