Open jinhucheung opened 8 years ago
sshd是一个连线服务,我们可以在远端主机通过ssh访问我们主机,获取shell修改主机设置 过程十分便利,而且sshd是基于[非对称密钥]加密的通信,数据在其通道上传输较安全
SSH(Secure SHell protocol)通过资料封包加密技术,将等待传输的数据包加密后再传输到网络上 SSH可以用来取代明文传输的finger/telent等连线服务
[资料加密]就是经过运算将原始数据转换成乱码,之后再传输到网络上,到达目标后再进行解密运算
加解密技术非常多,后面我们来介绍下目前常见的数据包加密技术[非对称密钥]系统,其通过两对不一样的公钥与密钥 进行加密/解密,在一个连线中,自己的公钥分别传给对方,用于加密数据包,而密钥则保存在本地,用于解密
非对称密钥系统示意图如下:
ssh具体连线过程:
/etc/ssh/ssh_host_*
这些文件根据加密方式不同而分类,其中.pub
为公钥文件,否为私钥文件
主机下次启动sshd服务时,则主动寻找这些密钥文件~/.ssh/known_hosts
中,当下次连线时进行匹配即可,之后计算出自己的密钥文件保存在~/.ssh
中ssh服务通过service ssh restart
启动
而要开机启动ssh服务可以通过sysv-rc-conf
或chkconfig
查看ssh服务监听状态: netstat -ntulp | grep ssh
ssh预设启动在port 22
中
ssh服务配置文件可以分为客服端配置以及服务器配置,这里我们说明服务器的配置,其为/etc/ssh/sshd_config
下面列出以下ssh常见的配置项目
Port 22 # SSH预设启动的端口
#Port 23 # 我们可以自己设置启动端口
Protocol 2 # SSH协议的版本
ListenAddress 0.0.0.0 # 设置监听的网络接口
PidFile /var/run/sshd.pid # SSHD的pid文件
# 主机的私钥放置文件
HostKey /etc/ssh/ssh_host_key # SSH version 1 使用的私钥
HostKey /etc/ssh/ssh_host_rsa_key # SSH version 2 使用的 RSA 私钥
HostKey /etc/ssh/ssh_host_dsa_key # SSH version 2 使用的 DSA 私钥
PermitRootLogin yes # 是否允许root登入
# 是否允许用户自行使用成对的密钥进行登入行为,针对version 2
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys # 用户针对终端自制的公钥放置在自己home目录下 .ssh/authorized_keys 內
PasswordAuthentication yes # 要密码验证
DenyUsers * # 抵挡所有用户
DenyUsers test # 抵挡test这个用户的远端登入
DenyGroups test # 抵挡test群组
设置完配置文件后,重启ssh服务即生效
在客服端,我们可以通过ssh来连接服务器,一般用法如下:
ssh [-f] [-o 参数] [-p 非正规端口(正规为22)] [账号@]IP [指令]
参数:
f
需要配合后面的指令,执行完指令后立即登出o
额外参数
ConnectTimeout=秒数
连线等待的时间StrictHostKeyChecking=[yes|no|ask]
预设为ask 询问是否主动将服务器的公钥写入known_hosts
中,no
则直接写入p
指定连接服务器上ssh服务监听的端口ssh是登入远端服务器进行工作,如果要从远端服务器下载/上传资源,我们可以直接使用sftp
通过sftp 账号@ip
连接上服务器后,就如同ftp
一样操作了,不明白指令时请输入help
正如同sftp
是ftp的ssh版本一样,scp
则是cp
的ssh版,
比如我需要将本机的/etc/hosts
文件上传至服务器中student的home目录下
scp /etc/hosts student@192.168.14.193:~
如需将服务器中/tmp目录下载至本地的/tmp中
scp -pr root@192.168.14.193:/tmp /tmp/
windows 要连接SSH服务器可以通过putty
或pietty
,它们的下载点:
putty
: http://www.chiark.greenend.org.uk/~sgtatham/putty/pietty
: http://www.csie.ntu.edu.tw/~piaip/pietty/它们使用相当简单,提供服务器IP和SSH服务端口等信息就可以使用
putty官网也提供类似sftp
功能的程序:psftp,用于连接远端SSH服务器,访问其资源。
同open IP
来连接服务器
移动终端要连接ssh服务器,可以通过serverauditor
这个程序即可,设置上相当简单,以下是serverauditor官网
如果我们想让指定客服端通过ssh服务登入某个用户时,不需要输入密码,我们可以将客服端的公钥写入用户的~/.ssh/authorized_keys
文件(sshd配置文件中AuthorizedKeysFile
属性指定)中,表示对应此客服端,远端服务器认证了,简化传输步骤,下次连接时,客服端以及服务器都拥有了对方的公钥与自己的私钥
具体步骤如下:
/etc/ssh/sshd_config
,注意PubkeyAuthentication
要为yes
,通过注意AuthorizedKeysFile
的文件,authorized_keys -t rsa
# 生成rsa的密钥~/.ssh/
中~/.ssh/authorized_keys
:注意权限,~/.ssh
应该是700
而authorized_keys
权限应该是644
[jinhu@clientlinux ~]$ ssh-keygen -t rsa # 客服端生成密钥文件
[jinhu@clientlinux ~]$ scp ~/.ssh/id_rsa.pub kumho@192.168.14.193:~ # 将客服端的公钥写入客服端的authorized_keys
[kumho@servicelinux ~]$ cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
[kumho@servicelinux ~]$ chmod 700 ~/.ssh # 修改服务端权限
[kumho@servicelinux ~]$ chmod 644 ~/.ssh/authorized_keys
Index