SSH(Secure SHell protocol)服务器:
SSH协议预设提供两个服务器功能:
1、类似telnet的远程联机使用shell的服务器,亦即是俗称的ssh
2、类似FTP服务的sftp-server,提供更安全的FTP服务
SSH使用上,主要是利用RSA/DSA/Diffie-Hellman 等机制
常见的网络封包加密技术通常是藉由所谓的[非对称密钥系统]来处理:两把不一样的公钥与私钥(Public and Private Key),同一方向的联机中,两把钥匙是需要成对的
公钥:提供给远程主机进行数据加密
私钥:用来数据解密,在本机上,不可外流
SSH有版本1和2,V2比V1更安全,加上了联机检测的机制,尽量使用v2版本的SSH
公钥与私钥是放在 /etc/ssh/ssh_host*,公钥有.pub后缀,私钥没有
ssh客户端联机程序-Linux用户
ssh:直接登入远程主机的指令
ssh [-f] [-o 参数项目] [-p 非正规端口] [账号@] IP 指令
选项与参数:
-f :需要配合后面的指令,不登入远程主机直接发送一个指令过去而已(很快)
-o 参数项目: 主要的参数项目有:
ConnectTimeout=秒数 :联机等待的秒数,减少等待的时间
StrictHostKeyChecking=[yes|no|ask]:预设是ask,若要让publickey主动加入
known_hosts ,则可以设定为no即可
-p :如果你的sshd服务启动在非正规的端口(正规端口是22),需使用此项目
建议使用emai的方式登入远程主机,例如:ssh [email protected] 即ssh 主机名@IP
使用ssh登入过一次后就不会再提示要增加主机公钥的信息了
服务器的公钥记录文件在此目录下:~/.ssh/known_hosts 即家目录的.ssh目录下
ssh服务中的账号必须为远程主机上存在的账号
相同IP的公钥不同提示错误时,按提示数字删除 /.ssh/known_hosts 下的那一密钥行
模拟FTP的文件传输方式:sftp
sftp 指令的用法与ssh很相似,是用在上传/下载文件,例如:sftp 用户名@主机名
在不考虑图形接口的FTP软件时,可以关掉FTP服务,直接使用 sftp-server来提供FTP服务
登陆后输入?查看可执行的指令
已经知道服务器上的档案名了,最简单的文件传输是透过scp指令,用法如下:
scp [-pr] [-l 速率] file [账号@]主机:目录名
<==上传,这的目录是远程主机的目录,file是本地主机的文件
scp [-pr] [-l 速率] [账号@]主机:file 目录名
<==下载,这的目录是本机的目录,file是远程主机的文件
选项与参数:
-p :保留原本档案的权限数据
-r:复制来源为目录时,可以复制整个目录(含子目录)
-l :可以限制传输的速度,单位为Kbits/s,例如 [-l 800]代表传输速率是100Kbytes/s
例:将本机的 /etc/hosts全部复制到127.0.0.1上面的student家目录
scp /etc/hosts [email protected]:~
ssh客户端联机程序--windows用户:
使用第三方软件,例如:pietty、psftp、filezilla、putty(常用)等
putty、pscp、psftp三款软件对应linux的ssh、scp、sftp三个指令
pietty(台湾的)完全兼容于putty
使用sftp-server的功能:psftp
在putty官网下载psftp程序,直接打开即可
psftp> open 远程主机IP
输入用户名和密码即可进入
图形化接口的sftp客户端软件:Filezilla
所有的sshd服务器详细设定都放在:/etc/ssh/sshd_config 此文件中设定值前加#的是默认值,可依据它来修改,修改后需要重启sshd服务生效
任何服务,修改配置文件后都最好重启服务
制作不用密码可立即登入的ssh用户:
1、客户端建立两把钥匙:
在客户端上输入指令:ssh-keygen [-t rsa|dsa] <==可选rsa或dsa,不知道则默认是rsa(一路回车按下去)
查看:ls -ld ~/.ssh; ls -l ~/.ssh
2、将公钥档案数据上传到服务器上:
scp ~/.ssh/id_rsa.pub [email protected]:~ <==上传到dmtsai的家目录底下
3、将公钥放置到服务器端的正确目录与文件名:
1、在服务器将从客户端上传的id_rsa.pub数据附加到authorized_keys(没有则用root 建立)档案内:
ls -ld .ssh/ 查看这个目录,不存在则新建,权限务必是700,且属于使用者本人的账号与群组才行
mkdir .ssh;chmod 700 .ssh 假设不存在 .ssh/目录时,则使用此指令创建和修改权限
2、将公钥档案内的数据使用cat转存到authorized_keys内:
ls -l *pub 查看是否存在
cat id_rsa.pub >> .ssh/authorized_keys
chmod 644 .ssh/authorized_keys authorized_keys这个档案权限要是644
ls -l .ssh 查看权限和所属
至此,即实现了不需要密码即可使用ssh相关的客户端指令。可加入任务计划定时执行了
原理就是将客户端某账号生成的public key(就是id_rsa.pub)copy到需要远程的主机上,并新增到某账号的 ~/.ssh/authorized_keys中
若非必要,不要将sshd对Internet开放可登入的权限,尽量局限在几个小范围内的IP或主机名即可!通过修改ssh_config配置文件实现
原文地址:http://blog.51cto.com/3134965/2133110