SSH远程管理
SSH(Secure Shell) 是一种安全通道协议,主要用来实现字符界面的远程登录、远程复制等功 能。SSH 协议对通信双方的数据传输进行了加密处理,其中包括用户登录时输入的用户口令。与早 期的 Telent (远程登录)、RSH(Remote Shell, 远程执行命令)、RCP(Remote File Copy, 远程文件复 制)等应用相比, SSH协议提供了更好的安全性。
openssh是实现ssh协议的开源软件项目,适用于UNIX,linux操作系统。
openssh官网
openssh服务器由openssh、openssh-server等软件包提供(默认已经安装,并将ssh服务添加为标准的系统服务)。只要拥有合法的登录的shell都可以远程登录系统。
sshd服务的配置文件默认位于/etc/ssh/sshd_config目录下(Centos系统)
SSH配置文件信息
#服务监听选项
port 22 #监听端口
ListenAddress 192.168.6.16 #监听地址
Protocol 2 #使用SSH V2协议(建议开启)
…………
UseDNS no #禁用DNS反向解析3
#用户登录控制
LoginGraceTime 2m #登录验证时间为2分钟(默认为2分钟)
PermitRootLogin no #禁用root用户登录(默认允许root用户登录)
MaxAuthTries 6 #最大重试次数
…………
PermitEmptyPasswords no #禁止空密码用户登录(建议开启)
PasswordAuthentication yes #启用密码验证
PubkeyAuthentication yes #启用密钥对验证
AuhorizedKeysFile .ssh/authorized_keys #指定公钥库文件
UsePAM yes #判断客户端来源是正常合法的。(会DNS反向查询客户端的主机名)
PrintMotd yes #登录后显示默认信息
SyslogFacility AUTHPRIV #登录时记录信息,记录类型为:AUTHPRIV(服务日志存放在:/var/log/secure)
当希望只允许或禁止某些用户登录时,可以使用AllowUsers 或 DenyUsers 配置,两者用法类似(注 意不要同时使用)例如:
AllowUsers jingyu ansheng chen@6.6.6.6
#只允许jingyu,ansheng chen,用户登录其中chen用户仅能够从ip地址:6.6.6.6的主机远程登录
登录验证方式
sshd 服 务支持两种验证方式——密码验证、密钥对验证,可以设置只使用其中一种方式,也可以两种方式 都启用。
密码验证:对服务器中本地系统用户的登录名称、密码进行验证。这种方式使用最为简便, 但从客户端角度来看,正在连接的服务器有可能被假冒;从服务器角度来看,当遭遇密码
穷举(暴力破解)攻击时防御能力比较弱。
密钥对验证:要求提供相匹配的密钥信息才能通过验证。通常先在客户端中创建一对密钥 文件(公钥、私钥),然后将公钥文件放到服务器中的指定位置。远程登录时,系统将使用 公钥、私钥进行加密/解密关联验证,大大增强了远程管理的安全性。该方式不易被假冒, 且可以免交互登录,在 Shell 中被广泛使用。
当密码验证、密钥对验证都启用时,服务器将优先使用密钥对验证。对于安全性要求较高的服 务器,建议将密码验证方式禁用,只允许启用密钥对验证方式;若没有特殊要求,则两种方式都可
启用。
PasswordAuthentication yes #启用密码验证
PubkeyAuthentication yes #启用密钥对验证
AuthorizedKeysFile .ssh/authorized_keys #指定公钥库文件
构建密钥免密登录ssh
密钥对验证方式可以为远程登录提供更好的安全性。整个过程包括四步,首先要在 SSH 客户端以zhangsan用户身份创建密钥对,并且要将创建的公钥文件上传至SSH 服务器端, 然后要将公钥信息导入服务器端的目标用户 lisi的公钥数据库,最后以服务器端用户 lisi 的身份登 录验证。
创建密钥对
ssh-keygen -t ecdsa
#-t 选项用于指定算法类型,可用的加密算法为 ecdsa 或 dsa
[root@jingyu ~]# ssh-keygen -t ecdsa
Generating public/private ecdsa key pair.
Enter file in which to save the key (/root/.ssh/id_ecdsa): #指定私钥位置(默认为/root/.ssh)
Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase): #设置私钥短语
Enter same passphrase again: #确认私钥短语
Your identification has been saved in /root/.ssh/id_ecdsa.
Your public key has been saved in /root/.ssh/id_ecdsa.pub.
The key fingerprint is:
0d:08:fa:f5:ad:f6:c0:f4:dd:ec:af:5e:02:d1:d4:61 root@jingyu
The key's randomart image is:
+--[ECDSA 256]---+
| . .E.|
| . . . o. .|
| . o . . . |
| . . . + . |
| . S o . |
| o o . + |
| = . . + .|
| . o . o |
| . .+o.|
+-----------------+
一般直接按enter键即可。(生产环境中不建议这样做。)
ls -lh /root/.ssh/id_ecdsa*
查看确认生成的密钥文件
新生成的密钥对文件中, id_ecdsa 是私钥文件,权限默认为600,对于私钥文件必须妥善保管,
不能泄露给他人; id_ecdsa.pub 是公钥文件,用来提供给 SSH 服务器。
使用“ssh-copy-id -i 公钥文件 user@host”格式,“-i”选项指定公钥文件, “user”是指目标主机的用户。验证密码后, 会将公钥自动添加到目标主机user 宿主目录下的.ssh/authorized_keys 文件结尾。
ssh-copy-id #客户端地址
SSH客户端程序(ssh、scp、sftp)
1、ssh
修改端口之后则在登录时必须通过 "-p" 选项指定端口号(例如:ssh -p 1626 6.6.6.6)
当用户第一次登录 SSH 服务器时,必须接受服务器发来的ECDSA 密钥(根据提示输入“yes”) 后才能继续验证。接收的密钥信息将保存到~/.ssh/known_hosts 文件中。
2、scp远程复制
通过 scp 命令可以利用 SSH 安全连接与远程主机相互复制文件。使用 scp 命令时,除了必须指 定复制源、目标之外,还应指定目标主机地址、登录用户,执行后根据提示输入验证口令即可。
例子:(在本地操作)
scp -rp /media 6.6.6.6:/
将本地主机的media目录拷贝到6.6.6.6主机的根目录下
(远程主机)
scp -rp 6.6.6.3:/media /
(免密之后不需要输入密码)
3、sftp
通 过 sftp 命令可以利用 SSH 安全连接与远程主机上传、下载文件,采用了与 FTP 类似的登录 过程和交互式环境,便于目录资源管理。
例如:
sftp root@6.6.6.6
sftp>ls
上传
sftp> put 文件名称 #上传文件
sftp>put -r 目录 #上传目录
sftp>mput 名称 远程目录 #上传多个本地文件,支持通配符
sftp>mput -r 名称 远程目录 #上传多个本地目录,支持通配符
下载
sftp>get 文件名称 本地目录位置 #下载文件
sftp>get -r 文件名称 本地目录位置 #下载目录
sftp>mget 文件名称 本地目录位置 #下载多个文件,支持通配符
sftp>mget -r 文件名称 本地目录位置 #下载多个目录,支持通配符