一个就是类似 telnet 的远程联机使用 shell 的服务器,即 ssh
另一个就是类似 FTP 服务的 sftp-server ,提供更安全的 FTP 服务
- 服务器建立公钥: 每一次启动 sshd 服务时,该服务会主动去找 /etc/ssh/ssh_host* 的文件,若系统刚刚安装完成时,由于没有这些公钥,因此 sshd 会主动去计算出这些需要的公钥,同时也会计算出服务器自己需要的私钥
- 客户端主动联机请求: 若客户端想要联机到 ssh 服务器,则需要使用适当的客户端程序来联机,包括 ssh, putty 等客户端程序连接
- 服务器传送公钥给客户端: 接收到客户端的要求后,服务器便将第一个步骤取得的公钥传送给客户端使用 (此时应是明码传送,反正公钥本来就是给大家使用的)
- 客户端记录并比对服务器的公钥数据及随机计算自己的公私钥: 若客户端第一次连接到此服务器,则会将服务器的公钥记录到客户端的用户家目录内的 ~/.ssh/known_hosts 。若是已经记录过该服务器的公钥,则客户端会去比对此次接收到的与之前的记录是否有差异。若接受此公钥, 则开始计算客户端自己的公私钥
- 回传客户端的公钥到服务器端: 用户将自己的公钥传送给服务器。此时服务器:具有服务器的私钥与客户端的公钥,而客户端则是: 具有服务器的公钥以及客户端自己的私钥,你会看到,在此次联机的服务器与客户端的密钥系统 (公钥+私钥) 并不一样,所以才称为非对称加密系统
- 开始双向加解密: (1)服务器到客户端:服务器传送数据时,拿用户的公钥加密后送出。客户端接收后,用自己的私钥解密 (2)客户端到服务器:客户端传送数据时,拿服务器的公钥加密后送出。服务器接收后,用服务器的私钥解密,这样就能保证通信安全
在上述的第 4 步骤中,客户端的密钥是随机运算产生于本次联机当中的,所以你这次的联机与下次的联机的密钥可能就会不一样啦! 此外在客户端的用户家目录下的 ~/.ssh/known_hosts 会记录曾经联机过的主机的 public key ,用以确认我们是连接上正确的那部服务器。
# Port 22 #默认端口,也可以使用多个端口
Protocol 2 #协议版本号
# ListenAddress 0.0.0.0 #默认值是监听所有接口的 SSH 要求
# PidFile /var/run/sshd.pid #放置 SSHD 这个 PID 的文件
# LoginGraceTime 2m #2分钟之内不输入密码,自动断开
# Compression delayed #使用压缩数据模式进行传输,登入后才将数据压缩 (delayed)
# 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 私钥
SyslogFacility AUTHPRIV #记录日志/var/log/secure
# LogLevel INFO #日志等级
# PermitRootLogin yes #是否允许 root 登入
# StrictModes yes #是否让 sshd 去检查用户家目录或相关文件的权限数据
# PubkeyAuthentication yes #使用密钥登录系统
# AuthorizedKeysFile .ssh/authorized_keys #用户登录公钥存放位置
PasswordAuthentication yes #登录密码认证
# PermitEmptyPasswords no #否允许以空的密码登入
# RhostsAuthentication no #系统不使用 .rhosts认证
# IgnoreRhosts yes #是否取消使用 ~/.ssh/.rhosts 来做为认证
# RhostsRSAAuthentication no #专门给 version 1 用的,使用 rhosts 文件在 /etc/hosts.equiv
# HostbasedAuthentication no #上面的项目类似,不过是给 version 2 使用的
# IgnoreUserKnownHosts no #是否忽略家目录内的 ~/.ssh/known_hosts
ChallengeResponseAuthentication no #允许任何的密码认证
UsePAM yes #利用 PAM 管理使用者认证,可以记录与管理
# PrintMotd yes #登入后是否显示出一些信息
# PrintLastLog yes #显示上次登入的信息
# TCPKeepAlive yes #当达成联机后,服务器会一直传送 TCP 封包给客户端以判断对方式否一直存在联机
UsePrivilegeSeparation yes #是否权限较低的程序来提供用户操作
MaxStartups 10 #同时允许几个尚未登入的联机画面
DenyUsers * #设定受阻止的使用者名称
DenyUsers test #阻止用户
DenyGroups test #阻止组
Subsystem sftp /usr/lib/ssh/sftp-server
# UseDNS yes #为了要判断客户端来源是正常合法的,因此会使用 DNS 去反查客户端的主机名,不过在内网这项目设定为 no 会让联机达成速度比较快
变换目录到 /etc/test 或其他目录
cd /etc/test
cd PATH列出目前所在目录下的文件名
ls
dir建立目录
mkdir directory删除目录
rmdir directory显示目前所在的目录
pwd更改文件或目录群组
chgrp groupname PATH更改文件或目录拥有者
chown username PATH更改文件或目录的权限
chmod 644 PATH
其中,644 与权限有关建立链接文件
ln oldname newname删除文件或目录
rm PATH更改文件或目录名称
rename oldname newname离开远程主机
exit (or) bye (or) quit针对本机 (Client) 的行为(都加上 l, L 的小写 )
变换目录到本机的 PATH 当中
lcd PATH列出目前本机所在目录下的文件名
lls在本机建立目录
lmkdir显示目前所在的本机目录
lpwd针对资料上传/下载的操作
将文件由本机上传到远程主机 put [本机目录或文件] [远程]
put [本机目录或文件]
如果是这种格式,则文件会放置到目前远程主机的目录下将文件由远程主机下载回来 get [远程主机目录或文件] [本机]
get [远程主机目录或文件]
若是这种格式,则文件会放置在目前本机所在的目录当中!可以使用通配符,例如:
get *
get *.rpm
1
2
|
scp
[-
pr
] [-l 速率]
file
[账号@]主机:目录名
#上传
scp
[-
pr
] [-l 速率] [账号@]主机:
file
目录名
#下载
|
1
2
3
|
-p :保留原来文件的权限数据
-r :复制来源为目录时,可以复制整个目录 (含子目录)
-l :可以限制传输的速度,单位为 Kbits
/s
,例如 [-l 800] 代表传输速限 100Kbytes
/s
|
12scp
/etc/hosts
* root@127.0.0.1:~
#上传
scp
root@127.0.0.1:
/etc/bashrc
/tmp
#下载
123456ssh
-keygen [-t rsa|dsa]
#可选 rsa 或 dsa
[root@localhost ~]
# ssh-keygen #默认算法
[root@localhost ~]
# ls -l .ssh/
total 8
-rw------- 1 root root 1675 May 27 03:05 id_rsa
-rw-r--r-- 1 root root 408 May 27 03:05 id_rsa.pub
建立 ~/.ssh 文件,注意权限需要为 700
mkdir .ssh ; chmod 700 .ssh #权限设定中,务必是 700 且属于使用者本人的账号与群组才行
将公钥内的数据使用 cat 转存到 authorized_keys 内
cat id_rsa.pub >> .ssh/authorized_keys
chmod 644 .ssh/authorized_keys #这个档案的权限设定中,就得要是 644 才可以
-
密码应该经常换且足够复杂
-
非默认端口登录
-
限制登录用户地址
-
禁止管理员直接登录
-
仅允许有限制用户登录
-
使用基于密钥的认证
-
禁止使用版本1
sftp是Secure File Transfer Protocol的缩写,安全文件传送协议。可以为传输文件提供一种安全的加密方法。sftp 与 ftp 有着几乎一样的语法和功能。SFTP 为 SSH的一部份,是一种传输档案至 Blogger 伺服器的安全方式。其实在SSH软件包中,已经包含了一个叫作SFTP(Secure File Transfer Protocol)的安全文件传输子系统,SFTP本身没有单独的守护进程,它必须使用sshd守护进程(端口号默认是22)来完成相应的连接操作,所以从某种意义上来说,SFTP并不像一个服务器程序,而更像是一个客户端程序。SFTP同样是使用加密传输认证信息和传输的数据,所以,使用SFTP是非常安全的。但是,由于这种传输方式使用了加密/解密技术,所以传输效率比普通的FTP要低得多,如果您对网络安全性要求更高时,可以使用SFTP代替FTP。