建站软件,企业建设网站软件,wordpress 安装ftp,游戏钓鱼网站怎么做目录概述#xff1a; 1. SSH简介 2. SSH安全验证方式 3. 安装并测试OpenSSH 4. SSH的密匙 4.1 生成你自己的密匙对 4.2分发公用密匙 5. 配置SSH 5.1 配置客户端的软件 5.2 配置服务端的软件 6. 拷贝文件 6.1 用scp拷贝文件 6.2 用sftp拷贝文件 6.3 …目录概述 1. SSH简介 2. SSH安全验证方式 3. 安装并测试OpenSSH 4. SSH的密匙 4.1 生成你自己的密匙对 4.2分发公用密匙 5. 配置SSH 5.1 配置客户端的软件 5.2 配置服务端的软件 6. 拷贝文件 6.1 用scp拷贝文件 6.2 用sftp拷贝文件 6.3 用rsync拷贝文件 6.4 用加密通道的ftp拷贝文件 1. SSH简介 SSH的英文全称是Secure SHell。通过使用SSH你可以把所有传输的数据进行加密这样中间人这种攻击方式就不可能实现了而且也能够防止DNS和IP欺骗。还有一个额外的好处就是传输的数据是经过压缩的所以可以加快传输的速度。SSH有很多功能它既可以代替telnet又可以为ftp、pop、甚至ppp提供一个安全的通道。 传统的网络服务程序如ftp、pop和telnet在本质上都是不安全的因为它们在网络上用明文传送口令和数据别有用心的人非常容易就可以截获这些口令和数据。而且这些服务程序的安全验证方式也是有其弱点的就是很容易受到中间人man-in-the-middle这种方式的攻击。所谓中间人的攻击方式就是中间人冒充真正的服务器接收你的传给服务器的数据然后再冒充你把数据传给真正的服务器。服务器和你之间的数据传送被 中间人一转手做了手脚之后就会出现很严重的问题。 最初SSH是由芬兰的一家公司开发的。但是因为受版权和加密算法的限制现在很多人都转而使用OpenSSH。OpenSSH是SSH的替代软件而且是免费的可以预计将来会有越来越多的人使用它而不是SSH。 SSH是由客户端和服务端的软件组成的有两个不兼容的版本分别是1.x和2.x。用SSH 2.x的客户程序是不能连接到SSH 1.x的服务程序上去的。OpenSSH 2.x同时支持SSH 1.x和2.x。 2. SSH安全验证方式 从客户端来看SSH提供两种级别的安全验证。 1第一种级别基于口令的安全验证 只要你知道自己帐号和口令就可以登录到远程主机。所有传输的数据都会被加密但是不能保证你正在连接的服务器就是你想连接的服务器。可能会有别的服务器在冒充真正的服务器也就是受到中间人这种方式的攻击。 2第二种级别基于密匙的安全验证 需要依靠密匙也就是你必须为自己创建一对密匙并把公用密匙放在需要访问的服务器上。如果你要连接到SSH服务器上客户端软件就会向服务器发出请求请求用你的密匙进行安全验证。服务器收到请求之后先在你在该服务器的家目录下寻找你的公用密匙然后把它和你发送过来的公用密匙进行比较。如果两个密匙一致服务器就用公用密匙加密质询challenge并把它发送给客户端软件。客户端软件收到质询之后就可以用你的私人密匙解密再把它发送给服务器。 用这种方式你必须知道自己密匙的口令。但是与第一种级别相比第二种级别不需要在网络上传送口令。 第二种级别不仅加密所有传送的数据而且中间人这种攻击方式也是不可能的因为他没有你的私人密匙。但是整个登录的过程可能需要10秒。3.安装并测试OpenSSH 因为受到美国法律的限制在很多Linux的发行版中都没有包括OpenSSH。但是可以从网络上下载并安装OpenSSH $sudo apt-get install ssh 安装完OpenSSH之后用下面命令测试一下 ssh -l [your accountname on the remote host] [address of the remote host] 如果OpenSSH工作正常你会看到下面的提示信息 The authenticity of host [hostname] cant be established. Key fingerprint is 1024 5f:a0:0b:65:d3:82:df:ab:44:62:6d:98:9c:fe:e9:52. Are you sure you want to continue connecting (yes/no)? OpenSSH告诉你它不知道这台主机但是你不用担心这个问题因为你是第一次登录这台主机。键入yes。这将把这台主机的识别标记加到~/.ssh/know_hosts文件中。第二次访问这台主机的时候就不会再显示这条提示信息了。然后SSH提示你输入远程主机上你的帐号的口令。输入完口令之后就建立了SSH连接这之后就可以象使用telnet那样使用SSH了。4. SSH的密匙4.1 生成你自己的密匙对 生成并分发你自己的密匙有两个好处 1) 可以防止中间人这种攻击方式 2) 可以只用一个口令就登录到所有你想登录的服务器上 用下面的命令可以生成密匙 ssh-keygen 如果远程主机使用的是SSH 2.x就要用这个命令 ssh-keygen -d 在同一台主机上同时有SSH1和SSH2的密匙是没有问题的因为密匙是存成不同的文件的。 ssh-keygen命令运行之后会显示下面的信息 Generating RSA keys: ............................ooooooO......ooooooO Key generation complete. Enter file in which to save the key (/home/[user]/.ssh/identity): [按下ENTER就行了] Created directory /home/[user]/.ssh. Enter passphrase (empty for no passphrase): [输入的口令不会显示在屏幕上] Enter same passphrase again: [重新输入一遍口令如果忘记了口令就只能重新生成一次密匙了] Your identification has been saved in /home/[user]/.ssh/identity. [这是你的私人密匙] Your public key has been saved in /home/[user]/.ssh/identity.pub. The key fingerprint is: 2a:dc:71:2f:27:84:a2:e4:a1:1e:a9:63:e2:fa:a5:89 [user][local machine] ssh-keygen -d做的是几乎同样的事但是把一对密匙存为默认情况下/home/[user]/.ssh/id_dsa私人密匙和/home/[user]/.ssh/id_dsa.pub公用密匙。 现在你有一对密匙了公用密匙要分发到所有你想用ssh登录的远程主机上去私人密匙要好好地保管防止别人知道你的私人密匙。用ls -l ~/.ssh/identity或ls -l ~/.ssh/id_dsa所显示的文件的访问权限必须是-rw-------。 如果你怀疑自己的密匙已经被别人知道了不要迟疑马上生成一对新的密匙。当然你还要重新分发一次公用密匙。4.2分发公用密匙 在每一个你需要用SSH连接的远程服务器上你要在自己的家目录下创建一个.ssh的子目录把你的公用密匙identity.pub 拷贝到这个目录下并把它重命名为authorized_keys。然后执行 chmod 644 .ssh/authorized_keys 这一步是必不可少的。如果除了你之外别人对authorized_keys文件也有写的权限SSH就不会工作。 如果你想从不同的计算机登录到远程主机authorized_keys文件也可以有多个公用密匙。在这种情况下必须在新的计算机上重新生成一对密匙然后把生成的identify.pub文件拷贝并粘贴到远程主机的authorized_keys文件里。当然在新的计算机上你必须有一个帐号而且密匙是用口令保护的。有一点很重要就是当你取消了这个帐号之后别忘了把这一对密匙删掉。5. 配置SSH5.1 配置客户端的软件 OpenSSH 有三种配置方式命令行参数、用户配置文件和系统级的配置文/etc/ssh/ssh_config。命令行参数优先于配置文件用户配置文件优先于系统配置文件。所有的命令行的参数都能在配置文件中设置。因为在安装的时候没有默认的用户配置文件所以要把 /etc/ssh/ssh_config拷贝并重新命名为~/.ssh/config。 标准的配置文件大概是这样的 [lots of explanations and possible options listed] # Be paranoid by default Host * ForwardAgent no ForwardX11 no FallBackToRsh no 还有很多选项的设置可以用man ssh查看CONFIGURATION FILES这一章。 配置文件是按顺序读取的。先设置的选项先生效。 假定你在www.foobar.com上有一个名为bilbo的帐号。而且你要把ssh-agent和ssh-add结合起来使用并且使用数据压缩来加快传输速度。因为主机名太长了你懒得输入这么长的名字用fbc作为www.foobar.com的简称。你的配置文件可以是这样的 Host *fbc HostName www.foobar.com User bilbo ForwardAgent yes Compression yes # Be paranoid by default Host * ForwardAgent no ForwardX11 no FallBackToRsh no 你输入ssh fbc之后SSH会自动地从配置文件中找到主机的全名用你的用户名登录并且用ssh-agent管理的密匙进行安全验证。这样很方便吧 用SSH连接到其它远程计算机用的还是paranoid偏执默认设置。如果有些选项没有在配置文件或命令行中设置那么还是使用默认的paranoid设置。 在我们上面举的那个例子中对于到www.foobar.com的SSH连接ForwardAgent和Compression被设置为 Yes其它的设置选项如果没有用命令行参数ForwardX11和FallBackToRsh都被设置成No。 其它还有一些需要仔细看一看的设置选项是 CheckHostIP yes 这个选项用来进行IP地址的检查以防止DNS欺骗。 CompressionLevel 压缩的级别从1最快到9压缩率最高。默认值为6。 ForwardX11 yes 为了在本地运行远程的X程序必须设置这个选项。 LogLevel DEBUG 当SSH出现问题的时候这选项就很有用了。默认值为INFO。5.2 配置服务端的软件 SSH服务器的配置使用的是/etc/ssh/sshd_config配置文件这些选项的设置在配置文件中已经有了一些说明而且用man sshd也可以查看帮助。请注意OpenSSH对于SSH 1.x和2.x没有不同的配置文件。 在默认的设置选项中需要注意的有 PermitRootLogin yes 最好把这个选项设置成PermitRootLogin without-password这样root用户就不能从没有密匙的计算机上登录。把这个选项设置成no将禁止root用户登录只能 用su命令从普通用户转成root。 X11Forwarding no 把这个选项设置成yes允许用户运行远程主机上的X程序。就算禁止这个选项也不能提高服务器的安全因为用户可以安装他们自己的转发器forwarder请参看man sshd。 PasswordAuthentication yes 把这个选项设置为no只允许用户用基于密匙的方式登录。这当然会给那些经常需要从不同主机登录的用户带来麻烦但是这能够在很大程度上提高系统的安全性。基于口令的登录方式有很大的弱点。 # Subsystem /usr/local/sbin/sftpd 把最前面的号去掉并且把路径名设置成/usr/bin/sftpserv用户就能使用sftp安全的FTP了sftpserv在sftp 软件包中。因为很多用户对FTP比较熟悉而且scp用起来也有一些麻烦所以sftp还是很有用的。而且2.0.7版本以后的图形化的ftp工具gftp也支持sftp。6. 拷贝文件6.1 用scp拷贝文件 SSH提供了一些命令和shell用来登录远程服务器。在默认情况下它不允许你拷贝文件但是还是提供了一个scp命令。 假定你想把本地计算机当前目录下的一个名为dumb的文件拷贝到远程服务器www.foobar.com上你的家目录下。而且你在远程服务器上的帐号名为bilbo。可以用这个命令 scp dumb bilbowww.foobar.com:. 把文件拷贝回来用这个命令 scp bilbowww.foobar.com:dumb . scp调用SSH进行登录然后拷贝文件最后调用SSH关闭这个连接。 如果在你的~/.ssh/config文件中已经为www.foobar.com做了这样的配置 Host *fbc HostName www.foobar.com User bilbo ForwardAgent yes 那么你就可以用fbc来代替bilbowww.foobar.com命令就简化为scp dumb fbc:.。 scp假定你在远程主机上的家目录为你的工作目录。如果你使用相对目录就要相对于家目录。 用scp命令的-r参数允许递归地拷贝目录。scp也可以在两个不同的远程主机之间拷贝文件。 有时候你可能会试图作这样的事用SSH登录到www.foobar.com上之后输入命令scp [local machine]:dumb .想用它把本地的dumb文件拷贝到你当前登录的远程服务器上。这时候你会看到下面的出错信息 ssh: secure connection to [local machine] refused 之所以会出现这样的出错信息是因为你运行的是远程的scp命令它试图登录到在你本地计算机上运行的SSH服务程序……所以最好在本地运行scp除非你的本地计算机也运行SSH服务程序。6.2 用sftp拷贝文件 如果你习惯使用ftp的方式拷贝文件可以试着用sftp。sftp建立用SSH加密的安全的FTP连接通道允许使用标准的ftp命令。还有一个好处就是sftp允许你通过exec命令运行远程的程序。从2.0.7版以后图形化的ftp客户软件gftp就支持sftp。 如果远程的服务器没有安装sftp服务器软件sftpserv可以把sftpserv的可执行文件拷贝到你的远程的家目录中或者在远程计算机的 $PATH环境变量中设置的路径。sftp会自动激活这个服务软件你没有必要在远程服务器上有什么特殊的权限。6.3 用rsync拷贝文件 rsync 是用来拷贝、更新和移动远程和本地文件的一个有用的工具很容易就可以用-e ssh参数和SSH结合起来使用。rsync的一个优点就是不会拷贝全部的文件只会拷贝本地目录和远程目录中有区别的文件。而且它还使用很高效的压缩算法这样拷贝的速度就很快。6.4 用加密通道的ftp拷贝文件 如果你坚持要用传统的FTP客户软件。SSH可以为几乎所有的协议提供安全通道。FTP是一个有一点奇怪的协议例如需要两个端口而且不同的服务程序和服务程序之间、客户程序和客户程序之间还有一些差别。 实现加密通道的方法是使用端口转发。你可以把一个没有用到的本地端口通常大于1000设置成转发到一个远程服务器上然后只要连接本地计算机上的这个端口就行了。有一点复杂是吗 其实一个基本的想法就是转发一个端口让SSH在后台运行用下面的命令 ssh [userremote host] -f -L 1234:[remote host]:21 tail -f /etc/motd 接着运行FTP客户把它设置到指定的端口 lftp -u [username] -p 1234 localhost 当然用这种方法很麻烦而且很容易出错。所以最好使用前三种方法。 小结 、ssh加密的远程连接协议。openssh,openssl 、默认端口22,建议修改 、到目前位置有1.x2.x两个版本2更安全 、服务端ssh 远程连接服务sftp服务 、ssh客户端包含ssh命令scp,sftp 、ssh安全验证口令和秘钥,这两种都是基于用户的 、安全优化修改默认端口禁止root远程连接 、公钥public key放在服务端相当于锁私钥private key放在客户端相当于钥匙。扩展 给你一个端口如何查出对应的服务 方法一lsof -i tcp:22 方法二netstat -lntup|grep 22推push scp -P52113 /data/oldboy.txt oldboy10.0.0.7:/tmp 拉pull scp -P52113 oldboy10.0.0.7:/tmp/oldboy.txt /data/源自http://blog.chinaunix.net/uid-25324849-id-3187125.html转载于:https://www.cnblogs.com/migongci0412/p/5052606.html