您的位置:首页 > 编程语言 > PHP开发

ssh,ftp服务器配置

2018-01-16 15:39 253 查看
SSH概述

传统的远程登录(telnet,rlogin)是不安全的,它们在网络上用明文传输口令和数据,SSH则是安全的。OpenSSH提供两种级别的验证方式:
基于口令的安全验证:知道服务器的帐号密码即可远程登录,口令和数据在传输过程中都会被加密。
基于密钥的安全验证:此时需要在创建一对密钥,把公有密钥放到远程服务器上自己的宿主目录中,而私有密钥则由自己保存。

Ubuntu服务端配置SSH

1. 软件安装

检查软件是否安装:

$sudo apt-cache policy openssh-client openssh-server

安装软件:

$sudo apt-get install openssh-server     //服务端

$sudo apt-get install openssh-client     //客户端(ubuntu10.10以安装)

该软件包中还携带了一些其他的SSH工具,如ssh-keygen用来生成私钥/公钥对,scp可以通过ssh远程复制文件,stfp可以实现ftp传输文件。

2. 配置文件

$/etc/ssh$ ls -l

total 148

-rw-r--r-- 1 root root 125749 2010-09-15 02:34 moduli  //ssh服务器的Diffie-Helllman密钥文件

-rw-r--r-- 1 root root   1669 2010-09-15 02:34 ssh_config  //ssh客户端配置文件

-rw-r--r-- 1 root root   2453 2011-03-09 14:09 sshd_config  //ssh服务器端配置文件

-rw------- 1 root root    672 2011-03-09 14:09 ssh_host_dsa_key  //ssh服务器端dsa算法私钥

-rw-r--r-- 1 root root    613 2011-03-09 14:09 ssh_host_dsa_key.pub  //ssh服务器dsa公钥

-rw------- 1 root root   1675 2011-03-09 14:09 ssh_host_rsa_key  //ssh服务器rsa算法私钥

-rw-r--r-- 1 root root    405 2011-03-09 14:09 ssh_host_rsa_key.pub  /ssh服务器rsa算法公钥

根据需要修改、确认sshd_config配置文件:

启用RSA加密方式:RSAAuthentication yes
启用公钥配对认证方式:PubkeyAuthentication yes
设置公匙文件路径:AuthorizedKeysFile %h/.ssh/<authorized_keys>
(选择性)密码登陆方式:PasswordAuthentication <yes | no>    #禁止密码验证登录,如果启用的话,OpenSSH的 RSA认证登录就失去意义
(选择性)root远程登录:PermitRootLogin <yes | no>

4. 获取需要登录到此服务器的ssh公匙

$mkdir .ssh     #在需要开启ssh连接的用户目录下建立 .ssh目录

$chmod 700 .ssh

$cd .ssh

$mv <from_client_xxx.pub> <authorized_keys>     #名称需要和配置文件中设置一致。此外如果采用的格式不是openssh,需要执行ssh-keygen -i -f Identity.pub >>authorized_keys进行格式转换

$chmod 644 authorized_keys     #更改公匙文件权限

3. 常用命令

$sudo /etc/init.d/ssh <start | stop | restart | status>

4. scp命令使用

$scp [sourceIP]:<sourceFile> [tergetIP]:<targetFile>

其中第一个参数是源文件,第二个是目标文件,当参数是ssh登录到的主机时可以省略ip或者主机名。当两个参数是两台远程主机的ip时,可以实现两台远程主机之间的文件传输。

example: scp /home/zone/1.sh 192.168.0.143:/home/erpang,从服务器下载1.sh到143主机的erpang目录下。

Ubuntu客户端配置SSH登录

1. 基于口令的认证

ssh 192.168.0.143/主机名(server ip 192.168.0.143)

初次登录服务器时会出现许多信息,这是因为ssh不能识别这台主机,输入yes后将会把这台服务器的信息写入~/.ssh/known_hosts文件,下次登录时就不会出现这样的信息。

2. 基于密钥的认证

假设生成的私钥为~/.ssh/id_rsa,公钥为~/.ssh/id_rsa.pub,需要将公钥复制到远程服务器上,这样当登录server时,client会向server提出请求,用私钥认证,server收到请求后,寻找公钥进行身份认证。

生成密匙:ssh-keygen [-t <rsa | dsa>] [-C "comment message"],默认为rsa。
拷贝公匙:scp id_rsa.pub 192.168.0.143:.ssh/authorized_keys,确保权限为644。
登录:ssh 192.168.0.143 如果执行ssh-keygen过程中设置了私钥密码,则登录过程中会要求输入私钥密码,否则直接登录完成。

SecureCRT配置SSH登录

1. 生成公匙/私匙对
使用SecureCRT的工具->创建公钥 ,加密算法选择RSA,由服务器端sshd配置文件中选择的算法决定。
私匙密码可以不设置,如果设置了,当登录的时候会要求输入此密码。comment信息,可以随意设置。
密匙长度默认为1024位,可以不更改。密匙格式选择OpenSSH。生成的xxx.pub为公匙,xxx为私匙。

2. 上传公匙到服务器
上传公匙到需要ssh登录的用户主目录下.ssh/文件夹中,注意一定要以ASCII格式上传。
在服务器端添加此公匙,并重启sshd服务。完成后,在客户端进行登陆测试,输入密钥通行短语(如果设置了),看看是否登录成功,如果不成功从下面几个方面检查:

权限是否是644
主机地址是否正确
密匙格式是否为OpenSSH,如果不是需要转换格式。密匙加密方式是否和服务端配置一致,RSA/DSA

GitHub配置SSH登录

Https和SSH方式Clone项目的区别:

前者可以随意克隆github上的项目,而不管是谁的;而后者则是你必须是你要克隆的项目的拥有者或管理员,且需要先添加 SSH key ,否则无法克隆。
https url 在push的时候是需要验证用户名和密码的;而 SSH 在push的时候,如果配置SSH key的时候设置了密码,则需要输入密码的,否则不需要输入密码。

Github中添加 SSH key 步骤:
1. 检查是否已经存在SSH key 
在git Bash 中,输入如下命令:

$ cd ~/.ssh
$ ls


检查是否已经存在密匙文件,例如 id_rsa.pub 或 id_dsa.pub 文件。如果文件已经存在,那么可以跳过步骤2,直接进入步骤3。

2. 创建 SSH key 

$ ssh-keygen -t rsa -C "your_email@example.com"


代码参数含义:
-t 指定密钥类型,默认是 rsa ,可以省略。
-C 设置注释文字,比如邮箱。
-f 指定密钥文件存储文件名。
以上代码省略了 -f 参数,因此,运行上面那条命令后会让你输入一个文件名,用于保存刚才生成的 SSH key 代码,如:

Generating public/private rsa key pair.
# Enter file in which to save the key (/c/Users/you/.ssh/id_rsa): [Press enter]


当然,也可以不输入文件名,使用默认文件名(推荐),那么就会生成 id_rsa 和 id_rsa.pub 两个秘钥文件。 
接着又会提示输入两次密码(该密码是push文件的时候要输入的密码,而不是github管理者的密码),
当然,也可以不输入密码,直接按回车。那么push的时候就不需要输入密码,直接提交到github上了,如:

Enter passphrase (empty for no passphrase):
# Enter same passphrase again:


接下来,会显示如下代码提示:

Your identification has been saved in /c/Users/you/.ssh/id_rsa.
# Your public key has been saved in /c/Users/you/.ssh/id_rsa.pub.
# The key fingerprint is:
# 01:0f:f4:3b:ca:85:d6:17:a1:7d:f0:68:9d:f0:a2:db your_email@example.com


当看到上面这段代码时,说明 SSH key 已经创建成功,只需要添加到github的SSH key上就可以了。

3. 添加 SSH public key 到 github 中
首先拷贝 id_rsa.pub 文件的内容,可以用编辑器打开文件复制,也可以用git命令复制该文件的内容:


$ clip < ~/.ssh/id_rsa.pub


然后登录github账号,进入设置(Account Settings)-->SSH key 菜单页面,点击 Add SSH key 按钮添加一个 SSH key 。把复制的 SSH key 代码粘贴到 key 所对应的输入框中,记得 SSH key 代码的前后不要留有空格或者回车。Title 所对应的输入框可以输入一个该 SSH key 显示在 github 上的一个别名,默认的会使用你的邮件名称。

4. 测试一下该SSH key

$ ssh -T git@github.com


输入以上命令后,会有一段警告信息:

The authenticity of host 'github.com (207.97.227.239)' can't be established.
# RSA key fingerprint is 16:27:ac:a5:76:28:2d:36:63:1b:56:4d:eb:df:a6:48.
# Are you sure you want to continue connecting (yes/no)?


这是正常的,输入 yes 回车既可。如果创建 SSH key 的时候设置了密码,接下来就会提示输入密码:

Enter passphrase for key '/c/Users/Administrator/.ssh/id_rsa':


如果密码输错了,会再要求输入,直到正确为止。注意,输入密码时如果输错一个字就会不正确,使用删除键是无法更正的。
密码正确后会看到下面这段话:

Hi username! You've successfully authenticated, but GitHub does not
# provide shell access.


如果用户名是正确的,说明已经成功设置SSH密钥。如果看到“access denied”,则表示拒绝访问,那么就需要使用 https 去访问,而不是 SSH 。

1.检查安装vsftpd服务器

以root进入终端后(其他账户进入终端的可以用su root 输入密码后进入root 模式)之后,在终端命令窗口输入以下命令进行验证:# rpm –qa | grep vsftpd。如果结果显示为“vsftpd-1.1.3-8”,则说明系统已经安装vsftpd服务器。若没有回复,即系统中没有安装。



2.rhel版本的系统光盘中带有vsftpd安装包,所以接下来,是挂载系统光盘到/media下以便调取。



3.上述截图显示本系统中没有安装vsftpd服务器,则用rpm命令安装。

即在终端命令窗口中安装vsftpd的命令: #rpm -ivh vsftpd-1.1.3-8.i386.rpm。

(1)先mount光驱,在/mnt/cdrom/Server目录里有rpm,rpm -ivh vsftpd*





 

4.创建用户

(1)首先要启动服务



(2)创建两个用户

   


5.vsftpd的配置

安装完之后在/etc/vsftpd/路径下会存在三个配置文件。

vsftpd.conf: 主配置文件

ftpusers: 指定哪些用户不能访问FTP服务器,这里的用户包括root在内的一些重要用户。

user_list: 指定的用户是否可以访问ftp服务器,通过vsftpd.conf文件中的userlist_deny的配置来决定配置中的用户是否可以访问,userlist_enable=YES ,userlist_deny=YES ,userlist_file=/etc/vsftpd/user_list 这三个配置允许文件中的用户访问FTP。
(1)查看主配置文件的默认配置:

(使用:cat /etc/vsftpd/vsftpd.conf |grep -v '^#';)




(2)修改配置文件:

登录ftp后会发现,用户可以访问其他目录,并且具有mpsp组的权限,这样做是不允许的,我们需要将用户的访问范围控制在其主目录下。方法如下:

a. vi /etc/vsftpd/vsftpd.conf进入ftp配置文件目录并编辑此文件,



b.找到#chroot_list_enable=YES,删除前面的那个#号,表示开启此限制功能;

找到chroot_list_file:chroot_list_file=/etc/vsftpd/chroot_list,删除前面的那个#号,表示开启此限制功能;加入chroot_local_use=NO

(进入编辑框后按i进行开始编辑)



 

 c.进入配置文件后,在末尾加入如下三行:

① userlist_enable=YES

        userlist_deny=NO

        userlist_file=/etc/vsftpd/vsftpd.user_list



 

d.禁止匿名用户登录



(编辑完,按esc后使用“:wq”保存并退出)

e. 对一些文件进行编辑

①  在etc目录找到vsftpd.chroot_list文件,进入编辑状态

加入你要限制的用户名,一行一个用户,比如ftp2



(编辑完,按esc后使用“:wq”保存并退出)

②进入vsftpd目录,找到vsftpd.user_list,键入ftp11,意味允许ftp11登陆ftp服务器



(编辑完,按esc后使用“:wq”保存并退出)

再在本机上,通过控制台,用ftp1通过ftp访问系统,用户成功登陆,并且成功的被限制在自己的主目录下,无法访问其他目录。

 

依次方法创建了2个用户,ftp1、ftp2。

 

查看ftp状态 sestatus -b | grep ftp:



然后输入:



关闭防火墙:



 

以下步骤是实现主机和虚拟机的互相ping通:











最终结果:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: