远程连接服务之SSH

SSH服务是日常使用服务器最常用的服务之一,本文内容将详细介绍ssh服务说明、安装、使用和优化。

一、SSH服务介绍

SSH 协议:安全外壳协议。为 Secure Shell 的缩写。SSH 为建立在应用层和传输层基础上的安全协议。是一种加密的网络传输协议,可在不安全的网络中为网络服务提供安全的传输环境。SSH通过在网络中创建安全隧道来实现SSH客户端与服务器之间的连接。虽然任何网络服务都可以通过SSH实现安全传输,SSH最常见的用途是远程登录系统,人们通常利用SSH来传输命令行界面和远程执行命令。使用频率最高的场合类Unix系统,但是Windows操作系统也能有限度地使用SSH。

       在设计上,SSH是Telnet和非安全shell的替代品。Telnet和Berkeley rloginrshrexec等协议采用明文传输,使用不可靠的密码,容易遭到监听、嗅探中间人***。SSH旨在保证非安全网络环境(例如互联网)中信息加密完整可靠。

1.工作原理

SSH以非对称加密实现身份验证。身份验证有多种途径,例如其中一种方法是使用自动生成的公钥-私钥对来简单地加密网络连接,随后使用密码认证进行登录;另一种方法是人工生成一对公钥和私钥,通过生成的密钥进行认证,这样就可以在不输入密码的情况下登录。任何人都可以自行生成密钥。公钥需要放在待访问的电脑之中,而对应的私钥需要由用户自行保管。认证过程基于生成出来的私钥,但整个认证过程中私钥本身不会传输到网络中。

SSH协议有两个主要版本,分别是SSH-1和SSH-2。无论是哪个版本,核实未知密钥来源都是重要的事情,因为SSH只验证提供用户是否拥有与公钥相匹配的私钥,只要接受公钥而且密钥匹配服务器就会授予许可。这样的话,一旦接受了恶意***者的公钥,那么系统也会把***者视为合法用户。

2.软件包说明

Linux系统一般都带有OpenSSH软件安装包。OpenSSH完整包包含有:openssh openssh-clients openssh-server openssh-askpass。

openssh:包含OpenSSH 服务器及客户端需要的核心文件;

openssh-clients:OpenSSH 客户端软件包

openssh-server:OpenSSH 服务器软件包

openssh-askpass:支持对话框窗口的显示,是一个基于X 系统的密码。

其中,openssh-clients包含常用的命令:

. 安全拷贝命令  /usr/bin/scp 

. 安全传输命令  /usr/bin/sftp

. 安全登录命令  /usr/bin/ssh

. 创建私钥命令  /usr/bin/ssh-keygen

. 传输公钥命令  /usr/bin/ssh-copy-id

openssh-server 包含常用的配置文件:

. 服务启动脚本文件  /etc/rc.d/init.d/sshd

. 服务程序配置文件  /etc/ssh/sshd_config

. 服务守护进程命令  /usr/sbin/sshd

二、SSH服务功能

1. SSH远程复制方法—scp

命令:scp -P22 -rp SER user@HOST:DEST

和rsync使用基本一样,区别在于scp只能是全量复制

2.SSH远程传输方法—sftp

命令:sftp -oPort=22 user@HOST

进入sftp界面,sftp主要的命令有:

bye         Quit sftp                           <– 表示退出sftp传输模式

cd path     Change remote directory to ‘path’   <– 改变远程目录信息

pwd         Display remote working directory   <– 显示远程主机当前目录信息

lcd path    Change local directory to ‘path’      <– 改变本地目录路径信息

lpwd        Print local working directory        <– 输出本地目录路径信息

get [-P] remote-path [local-path] 

            Download file                     <– 下载文件命令

put [-P] local-path [remote-path]                 <– 上传文件命令

            Upload file

3.SSH远程连接

linux客户端连接:ssh -p22 user@HOST [command]

windows客户端连接:利用xshell/SecureCRT/Putty软件连接

三、修改SSH配置文件

一般来说,修改的都是ssh服务端的配置文件,即/etc/ssh/sshd_config

#Port 22

设置sshd 监听端口号,默认是22

ListenAddress 0.0.0.0

设置sshd 服务器绑定的IP地址,默认是0.0.0.0,表示侦听所有地址,可以写成本地IP地址。

#LoginGraceTime 2m

当使用者连上 SSH server 之后,会出现输入密码的画面,在该画面中, 在多久时间内没有成功连上 SSH server 就强迫断线!若无单位则默认时间为秒! 可以根据实际情况来修改实际。

# PermitRootLogin yes

#是否允许 root 登入!预设是允许的,但是建议设定成 no !

PasswordAuthentication yes

开启密码验证

# PrintMotd yes

# 登入后是否显示出一些信息呢?例如上次登入的时间、地点等等,预设是yes

自定义提示信息可以修改/etc/motd

# PrintLastLog yes

显示上次登入的信息!预设也是 yes

#UseDNS yes

是否进行DNS反向解析,内网环境可以关闭,提升ssh远程连接效率。

#GSSAPIAuthentication yes

是否进行远程GSSAPI认证,内网环境可以关闭,提升ssh远程连接效率。

四、SSH服务密钥登录

1.Linux系统实现方法

①.管理机上生成密钥对

ssh-keygen -t dsa (交互模式)

ssh-keygen -t dsa -f /root/.ssh/id_dsa -P “” (免交互模式)

②.发送公钥

ssh-copy-id -i /root/.ssh/id_dsa.pub user@HOST (交互模式)

sshpass -p123456 ssh-copy-id -i /root/.ssh/id_dsa.pub “-o StrictHostKeyChecking=no user@HOST” (免交互)

2.Window系统实现方法

Window系统没有自带ssh客户端,通常使用第三方ssh,以xshell为例

①.xshell工具,生成密钥对

选择工具——新建用户密钥生成向导

学习笔记:远程连接服务之SSH

下一步,再下一步

学习笔记:远程连接服务之SSH

完成

②.保存公钥,改名为authorized_keys

学习笔记:远程连接服务之SSH

③.上传文件到服务器~/.ssh/ 目录中

至此,就可以通过ssh密钥安全登录服务了