远程连接服务之SSH
SSH服务是日常使用服务器最常用的服务之一,本文内容将详细介绍ssh服务说明、安装、使用和优化。
一、SSH服务介绍
SSH 协议:安全外壳协议。为 Secure Shell 的缩写。SSH 为建立在应用层和传输层基础上的安全协议。是一种加密的网络传输协议,可在不安全的网络中为网络服务提供安全的传输环境。SSH通过在网络中创建安全隧道来实现SSH客户端与服务器之间的连接。虽然任何网络服务都可以通过SSH实现安全传输,SSH最常见的用途是远程登录系统,人们通常利用SSH来传输命令行界面和远程执行命令。使用频率最高的场合类Unix系统,但是Windows操作系统也能有限度地使用SSH。
在设计上,SSH是Telnet和非安全shell的替代品。Telnet和Berkeley rlogin、rsh、rexec等协议采用明文传输,使用不可靠的密码,容易遭到监听、嗅探和中间人***。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工具,生成密钥对
选择工具——新建用户密钥生成向导
下一步,再下一步
完成
②.保存公钥,改名为authorized_keys
③.上传文件到服务器~/.ssh/ 目录中
至此,就可以通过ssh密钥安全登录服务了
转载于:https://blog.51cto.com/13554977/2120447
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/101645.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...