CentOS系统的服务器上设置SSH免密码登陆的教程
为系统管理员,你计划在 Linux 上使用 OpenSSH,完成日常工作的自动化,比如文件传输、备份数据库转储文件到另一台服务器等。为实现该目标,你需要从主机 A 能自动登录到主机 B。自动登录也就是说,要在 shell 脚本中使用ssh,而无需要输入任何密码。
本文会告诉你怎样在 CentOS/RHEL 上设置 SSH 免密码登录。自动登录配置好以后,你可以通过它使用 SSH (Secure Shell)和安全复制 (SCP)来移动文件。
SSH 是开源的,是用于远程登录的最为可靠的网络协议。系统管理员用它来执行命令,以及通过 SCP 协议在网络上向另一台电脑传输文件。
通过配置 SSH 免密码登录,你可以享受到如下的便利:
用脚本实现日常工作的自动化。
增强 Linux 服务器的安全性。这是防范虚拟专用服务器(VPS)遭受暴力破解攻击的一个推荐的方法,SSH 密钥单凭暴力破解是几乎不可攻破的。
什么是 ssh-keygen
ssh-keygen 是一个用来生成、创建和管理 SSH 认证用的公私钥的工具。通过 ssh-keygen 命令,用户可以创建支持SSH1 和 SSH2 两个协议的密钥。ssh-keygen 为 SSH1 协议创建 RSA 密钥,SSH2 则可以是 RSA 或 DSA。
什么是 ssh-copy-id
ssh-copy-id 是用来将本地公钥拷贝到远程的 authorized_keys 文件的脚本命令,它还会将身份标识文件追加到远程机器的 ~/ssh/authorized_keys 文件中,并给远程主机的用户主目录适当的的权限。
SSH 密钥
SSH 密钥为登录 Linux 服务器提供了更好且安全的机制。运行 ssh-keygen 后,将会生成公私密钥对。你可以将公钥放置到任意服务器,从持有私钥的客户端连接到服务器的时,会用它来解锁。两者匹配时,系统无需密码就能解除锁定。
在 CentOS 和 RHEL 上设置免密码登录 SSH
以下步骤在 CentOS 5/6/7、RHEL 5/6/7 和 Oracle Linux 6/7 上测试通过。
节点1 : 19216809 节点2 : 192168l10
步骤1 :
测试节点1到节点2的连接和访问:
代码如下:
[root@node1 ~]# ssh root@192168010The authenticity of host '192168010 (192168010)' can't be established
RSA key fingerprint is 6d:8f:63:9b:3b:63:e1:72:b3:06:a4:e4:f4:37:21:42
Are you sure you want to continue connecting (yes/no) yes
Warning: Permanently added '192168010' (RSA) to the list of known hosts
root@192168010's password:
Last login: Thu Dec 10 22:04:55 2015 from 19216801
[root@node2 ~]#
步骤二:
使用 ssh-key-gen 命令生成公钥和私钥,这里要注意的是可以对私钥进行加密保护以增强安全性。
步骤三:
代码如下:
[root@node1 ~]# ssh-keygenGenerating public/private rsa key pair
Enter file in which to save the key (/root/ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/ssh/id_rsa
Your public key has been saved in /root/ssh/id_rsapub
The key fingerprint is:
b4:51:7e:1e:52:61:cd:fb:b2:98:4b:ad:a1:8b:31:6d root@node1ehowstufflocal
The key's randomart image is:
+--[ RSA 2048]----+
| ++ |
| o o o |
| o o o |
| o + |
| S |
| |
| o E ooo |
| = ooo |
| oo |
+-----------------+
用 ssh-copy-id 命令将公钥复制或上传到远程主机,并将身份标识文件追加到节点2的 ~/ssh/authorized_keys 中:
代码如下:
[root@node1 ~]# ssh-copy-id -i ~/ssh/id_rsapub 192168010root@192168010's password:
Now try logging into the machine, with "ssh '192168010'", and check in:
ssh/authorized_keys
to make sure we haven't added extra keys that you weren't expecting
步骤四:
验证免密码 SSH 登录节点2:
代码如下:
[root@node1 ~]# ssh root@192168010Last login: Sun Dec 13 14:03:20 2015 from wwwehowstufflocal
我希望这篇文章能帮助到你,为你提供 SSH 免密码登录 CentOS / RHEL 的基本认知和快速指南。
首先下载软件;
[root@localhost ]# wget http://apachemirrorphpchinacom/httpd/httpd-229targz
--00:47:30-- http://apachemirrorphpchinacom/httpd/httpd-229targz
Resolving apachemirrorphpchinacom 221194139225
Connecting to apachemirrorphpchinacom|221194139225|:80 connected
HTTP request sent, awaiting response 200 OK
Length: 6396996 (61M) [application/x-gzip]
Saving to: `httpd-229targz1'
0% [ ] 36,300 413K/s
[root@localhost ]tar zxvf httpd-229targz
接着进入[root@localhost ~]cd httpd-229下边编译apache[root@localhost httpd-229]/configure --prefix=/usr/local/apache --enable-track-vars --enable-cgi --with-config-file-path=/usr/local/apache/conf下边编译这个需要一点时间的。
下边简单说说编译的这些的意思,--prefix=//usr/local/mysql/apache 指定把apahce安装到//usr/local/mysql/apache目录中;--enable-cgi 支持CGI;--with-config-file-path=//usr/local/mysql/apache/conf 指定把apache的配制文件放在//usr/local/mysql/apache/conf中;比如httpdconf配制文件就在这个目录中;--enable-track-vars 为启动cookie的get/post等追踪功能差不多编译好了。
会提示apache安装成功,[root@localhost ]make; make install //接着输入编译这个命令很简单就是make;make install即可!接着输入开启apache服务。[root@localhost ] server httpd restart到此处apache安装成功删除默认页rm -f /usr/local/apache/confd/welcomeconf即可看到可爱的403错误!
2,安装CentOS配置php;
[root@localhost ~]# tar zxvf php-526targz //解压php文件
[root@localhost ~]# cd php-526 //进去php安装目录
[root@localhost php-526]#]#/configure --prefix=//usr/local/mysql/php
--with-mysql=//usr/local/mysql/mysql --with-apxs2=//usr/local/mysql/apache/bin/apxs
--enable-track-vars --enable-force-cgi-redirect
--with-config-file-path=//usr/local/mysql/php/etc //编译php
CentOS配置安装:
[root@localhost php-526]#make
[root@localhost php-526]#make install
复制phpini-dist为phpini,并存放到/usr/local/php目录下![root@localhost php-526]# cp phpini-dist /usr/local/php/phpini编辑/usr/local/php/phpini文件,找到如下的一行;default_charset = "iso-8859-1"在这行下面加一行default_charset = "gb2312//下边组合apache+php找到#AddType application/x-tar tgz 这行,在下面加一行。前面不要加#号。
AddType application/x-httpd-php php找到下面一行在后面加上indexphp,这表示网站的默认页也能够为indexphp DirectoryIndex indexhtml indexhtmlvar indexphp 让后我们顺手下个测试php的页面吧编辑vi /usr/www/html/testphp写入echo /usr/www/html/testphp即可,到此处php+apache安装成功
3,安装CentOS配置mysql;
1]解压
[root@localhost root]# cd /usr/local/mysql/software
[root@localhost software]# ls
mysql-4016targz
[root@localhost software]#tar zxvf mysql-4016targz
2]编译和安装:在这个地方值得注意的是,我们要把mysql-4016安装到我们指定的目录中,为了系统和安全和优化,建议把自己用源码包安装的服务器类软件都放在//usr/local/mysql 目录里。所以在这里,我们就要把CentOS配置mysql-4016也安装到//usr/local/mysql/mysql这个目录中;
[root@localhost software]#cd
[root@localhost software]# cd mysql-4016
[root@localhost mysql-4016]#
/configure --prefix=//usr/local/mysql/mysql --with-mysqld-user=beinan
--with-extra-charsets=all --with-unix-socket-path=//usr/local/mysql/mysql/var/mysqlsock
[注]关于configure的选项的一点说明:
--prefix=//usr/local/mysql/mysql 把mysql-4016指定安装到//usr/local/mysql/mysql目录中;--with-extra-charsets=all 对多语言的支持;--with-unix-socket-path=//usr/local/mysql/mysql/var/mysqlsock 这个是指定mysql服务器启动后,
联机套接字文件所处的位置和文件名,也就是说,如果CentOS配置mysql服务器成功启动后,就能在//usr/local/mysql/mysql/var目录中看到mysqlsock文件。如果看不到,肯定是mysql启动不了。
--with-mysqld-user=beinan 这个是让mysql服务器也能让系统中普通用户beinan也能启动mysql服务器。当然要活学活用了你也可以把beinan换成你的系统中已经存在的普通用户,比如您的系统中已经存在sir这个用户,那就把beinan替换成sir就行了。
用普通用户来启动CentOS配置mysql的好处是:mysql的进程会自己死掉自动退出。当然root用户也可以,不过有时mysql有些进程死了,但不会自动退出,root自己也杀不掉。所以用普通用户就有这样的好处,大多不会出现mysql进程已死,但不会退出的情况;
[root@localhost mysql-4016]#make
[root@localhost mysql-4016]#make install 这样就安装完了
3]配制mysql:安装只是第一步,我们还要对mysql进行相应的配制;
一般的情况下CentOS配置mysql要找配制文件mycnf,位置在/etc目录下,所以我们得把文件mycnf文件放到/etc/目录下。让mysql服务器启动时能找到它。
我们CentOS配置安装好mysql后,配制文件应该在//usr/local/mysql/mysql/share/mysql目录中,CentOS配置文件有几个,比如my-hugecnf my-mediumcnf my-largecnf my-smallcnf,不同的流量的网站和不同配制的服务器环境,当然需要有不同的配制文件了。一般的情况下,my-mediumcnf这个配制文件就能满足我们的大多需要;
进入/usr/local/mysql这个目录,看一下是不是已经安装好了呢
[root@localhost mysql-4016]# cd //usr/local/mysql/mysql/
[root@localhost mysql]# ls
bin include info lib libexec man mysql-test share sql-bench
我们把//usr/local/mysql/mysql/share/mysql这个目录下的my-mediumcnf,复制为mycnf到/etc目录下。[root@localhost mysql]# cp //usr/local/mysql/mysql/share/mysql/my-mediumcnf /etc/mycnf
做了这些工作以后,还得创造MySQL授权表,否则数据库也是启动不了。mysql_install_db,这个命令的用途就是做这个的。mysql的命令都安装到了//usr/local/mysql/mysql/bin这个目录中。[root@localhost mysql]#//usr/local/mysql/mysql/bin/mysql_install_db
运行mysql_install_db命令过后,我们查看//usr/local/mysql/mysql就会发现,有个var的目录。这个目录,就是用来装所有数据库的位置,比如我们创建了linuxsir的数据库后,就在在//usr/local/mysql/mysql/var目录中有linuxsir的目录。这回应该明白了吧。
4]启动CentOS配置mysql服务器,可能这是最轻松的了,不过也不能高兴的太早,因为有时会出现权限方面的错误。
CentOS配置mysql服务器启动,应该是//usr/local/mysql/mysql/share/mysql目录中的 mysqlserver启动方法是:[root@localhost mysql]# //usr/local/mysql/mysql/share/mysql/mysqlserver start 如果不能启动请运行/usr/local/mysql/bin/mysqld_safe --user=root 就能够启动了!!
接着输入/usr/local/mysql/mysql/share/mysql/mysqlserver start即可成功启动好了,
我们把密码设置为123456 /usr/local/mysql/bin/mysqladmin -u root password 123456如果没有返回错误说明正确了。接着输入/usr/local/mysql/bin/mysql -u root -p就可以管理mysql了。
但是,据最近一次,国外科技网站w3techs的数据显示,截止到2010年7月28日,CentOS以高达316%的份额占据了Linux Web服务器的榜首,第二和第三分别是Debian和Red Hat。也就是说,在每十个基于Linux的Web服务器当中,就有三个CentOS,两个半Debian和一个半RHEL。
2009年10月-2010年7月Linux Web服务器市场份额(W3Techs统计)
虽然说,CentOS并不算是一个流行的Linux发行版,在各种热门Linux发行版的排行上都没什么特别好的排名;CentOS也是一个丝毫没有个性的发行版——它根本就是和Red Hat企业级Linux一模一样的。虽然如此,但是在作为Web服务器运行的Linux当中,CentOS却是毫无悬念的No 1。
CentOS为何会如此受用呢?
首先,应该是“Cost(成本)”的原因。既然,CentOS发行版和Red Hat企业级Linux几乎是一模一样的,那么,如果在没有特别需求的情况下,为何不用免费的CentOS呢?况且在美国,RedHat的价格大约是每个服务器每年1000美元,而在国内,大规模的企业,价格更是到了每台服务器每年上万甚至数十万元之间,不是谁都愿意承担这笔费用的。
其次,是由于CentOS在性能和功能等各方面表现都非常优秀。与RedHat非常相似,CentOS在数据中心里面很受欢迎,因为它容易架设、以及后期的维护和管理。CentOS属于社区维护的操作系统,甚至很多新颖的特性,都会首先在这款系统上试用,成熟了之后,才会选择植入其付费的企业版操作系统。
下面编者将安装这款操作系统,并同时用这款操作系统搭建一台常用的文件服务器。
CentOS 55桌面
第2页:图形化安装过程(一)
图形化安装过程(一)
CentOS的安装界面分为图形模式和文本模式两种。这里,很多人会选择文本安装模式,并且选择命令模式来操控系统,这样可以为系统节省很多资源。这里编者特别地来体验一下图形模式安装。单击回车键即可开始安装。
安装初始界面
随后,你可以选择光盘安装或者是硬盘安装,进入图形安装界面。
下面的几个步骤,与其他系统安装过程无异:选择系统语言、键盘布局、创建分区、网络设备、时钟以及用户名和密码等。当然,你可以进行在“网络设备”进行手工设置,配置主机名以及其他设置。这里,编者选择系统安装完成之后,通过VI进行配置。
网络设备
系统配置完成,单击“下一步”开始安装CentOS 55
第3页:图形化安装过程(二)
图形化安装过程(二)
系统安装完成之后,需要重新引导。之后,系统还要进行几项基本设置。
欢迎界面
确认是否启用防火墙,同时选择信任的服务
SELinux设置
同时,系统需要你进行当前时间的校对和用户及密码的设置。自此,系统安装才算完成。
第4页:安装Samba
安装Samba
完成CentOS 55系统安装之后,下面开始今天的主要任务:通过Samba服务器来构建文件服务器。
在我们使用Windows作为客户机的时候,通常有文件、打印共享的需求。作为Windows网络功能之一,通常可以在Windows客户机之间通过Windows Network固有的功能实现这些要求。然而,通过Samba我们也可以让一台CentOS主机来兼Windows网络,实现同样的功能,进而充分发挥CentOS主机的可用性。
注:Samba是一个工具套件,是在Linux和UNIX系统上实现SMB(Server Message Block)协议的一个免费软件,由服务器及客户端程序构成。
首先,通过 yum 来在线安装Samba。
注:Yum( Yellow dog Updater, Modified)是一个在Fedora和RedHat以及SUSE中的Shell前端软件包管理器。基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软体包,无须繁琐地一次次下载、安装。
在线安装Samba
因为是在线安装,所以完成安装通常需要一段时间,系统会不断地做出提示。
Samba安装成功
第5页:配置Samba(1)
配置Samba
安装完成之后,还通过编辑 /etc/samba/smbconf ,根据需求配置Samba。在这里,本文的意图是只将文件共享应用于内网,并让将要被共享的目录拥有充分的读写权限属性。
找到全局设置标签[global],并在其下加入文字编码的参数设置。
编辑Samba的配置文件smbconf
同时,找到workgroup = MYGROUP此行,将工作组名称改为 Windows 网络所定义的工作组名WORKGROUP。并设置hosts allow = 1921680127,指定内网IP地址及本地,只允许这两种情况的访问,取消行前的“;”符号。
修改工作组名和主机允许IP
然后在配置文件的末尾填如下几行,定义公众共享目录:
定义公众共享目录
第6页:配置Samba(2)
配置Samba
接下来,创建将要通过Samba共享给Windows网络的专用目录。
通过Samba共享给Windows网络的专用目录
在进行到服务端的连接之前,需要预先对用于登录Samba的用户进行设置。
在这里,编者以CentOS中Samba用户数据库管理工具"smbpasswd"为例,创建用于登录Samba的用户数据。当然,前提是系统用户中存在该用户,才可以创建该用户在Samba用户数据库中的信息。所以,必须先用useradd创建该用户。
创建新用户
将该用户信息加入到Samba用户数据库中
第7页:启动Samba服务
启动Samba服务
在启动Samba服务之前,首先将防火墙设置中Samba所用到的端口进行开放。
通过vi /etc/sysconfig/iptables,编辑 iptables 配置文件。
编辑iptables配置文件
并且,键入etc/rcd/initd/iptables restart,重新启动iptables,使新的规则生效。同时,启动Samba服务,包括SMB和NMB服务。
重新启动iptables,使新的规则生效
从Windows客户端连接到Samba服务器
在服务端启动Samba服务后,我们就可以从Windows客户端通 Windows网络连接到Samba。这里以Windows XP为例,说明如下连接过程:
1、从桌面打开"网上邻居",并点击"查看工作组计算机"选项;
2、确认出现Samba服务端的连接,并双击该连接;(本站文档的主机名以Sample为例)
3、输入在服务端预先设置好的Samba用户的用户名及密码;(用户名同系统用户名,密码需要输入在通过smbpasswd为该系统用户设置的Samba专用的密码。)
4、然后确认能够连接到Samba服务器,并出现根目录及Samba专用共享目录。
最后,在相应目录进行新建、修改以及删除文件的操作,测试相应权限的可操作性。
本文采用最新的CentOS 7 来学习搭建Linux各种服务器,今天分享的是搭建ftp服务器(ps:不建议使用最新的系统去学习,因为系统发生了改变,好多以前的搭建服务器的方法就不行了,比如说centos7将防火墙由iptables换为了firewall,再按照原来的教程去搭建就会遇到很多问题,当然如果只是想用服务器大可在安装的时候勾选相应的选项系统会自动安装好相关的服务)由于本人运气比较差,所以在安装的过程遇到了各种奇葩的问题,并且本人还是一个刚入门的小菜鸟,因此花了足足3天才算把ftp服务器搭好当然学习的过程就是debug的过程,遇到的问题,越多学到的知识也就越丰富,下面就来分享一下我的ftp搭建经验。
首先是用VM安装CentOS7系统
ps:我的安装选项选的是最小安装,所以内置软件很少
至于具体的安装,这个不在本文的范围之内,如果需要交流,可q我
安装完成后如果请确保网络畅通,如果没有网,请输入命令nmtui打开网络设置
然后我们需要先将centos7的防火墙重新改回iptables
1将firewall卸载,需要执行以下命令
2安装iptables-services
3开启iptables服务
4将防火墙设为开机启动
5在/etc/sysconfig文件夹下生成iptables配置文件
接下来安装ftp服务器vsftp
配置防火墙
用vim打开/etc/sysconfig/iptables
(ps:一定要放在
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
这两条规则前面,因为防火墙的规则是从上到下解析的)
虽然防火墙设置好了,但是不代表ftp服务器可以正常使用了,我们还要配置selinux
通过 getsebool -a | grep ftp我们可以看到selinux是禁止了所有的ftp服务,为了能正常使用我们需要将
ftp_home_dir,ftpd_connection_db 两个boolean变量设为true
(ps:如果不开启这项将不能上传和下载文件哦!O(∩_∩)O~)
通过以上设置我们终于可以使用ftp服务啦!在windows下测试如下
快去体验吧!!!
CentOS 修改IP地址等网络相关的配置文件
找到对应网卡的IP地址配置文件:ifcfg-eth数字
路径:/etc/sysconfig/network-scripts/ifcfg-eth数字
文件内配置项说明
复制代码
代码如下:
DEVICE=eth0 #描述网卡对应的设备别名,例如ifcfg-eth0的文件中它为eth0
BOOTPROTO=static #设置网卡获得ip地址的方式,选项有:static(静态),dhcp(通过DHCP获取IP)或bootp(使用BOOTP协议获得IP)
BROADCAST=1921680255 #子网广播地址
HWADDR=00:17:F3:05:18:20 #网卡物理地址(MAC)
IPADDR=19216802 #BOOTPROTO=static时,使用此IP地址
IPV6INIT=no #初始化IPv6的功能
IPV6_AUTOCONF=no #是否自动化配置IPv6
NETMASK=2552552550 #网卡对应的网络掩码
NETWORK=19216810 #网卡对应的网络地址
ONBOOT=yes #系统启动时是否启用此设备,yes时,系统启动时激活
#TYPE=Ethernet #网络类型
#USERCTL=no #非root用户是否可控制该设备
2014年03月18日补充更新:NETWORK这个参数在CentOS中不要设置,官方已经弃用,并且在设置之后可能会出现不能成功添加网关的问题,可以参见最新的博文:CentOS网络配置中NETWORK设置后引起的问题
CentOS官方帮助:http://wwwcentosorg/docs/5/html/Deployment_Guide-en-US/s1-networkscripts-interfaceshtml
CentOS 网关配置相关的配置文件
路径: /etc/sysconfig/network
文件内配置项说明
复制代码
代码如下:
NETWORKING=yes # 表示系统是否使用网络,一般为yes。如果为no,则不使用网络,很多系统服务无法启动
#NETWORKING_IPV6=no #是否启用IPv6
#FORWARD_IPV4=no #是否开启IP转发功能
#HOSTNAME=localhostlocaldomain #设置本机的主机名,设置的值要和/etc/hosts中设置的主机名对应;注释掉,一般先解析主机名或者域名,再解析DNS
GATEWAY=19216811 #设置网关的IP地址
#GATEWAYDEV=gateway #网关设备名称
CentOS 官方帮助:http://wwwcentosorg/docs/5/html/52/Deployment_Guide/s2-sysconfig-networkhtml
CentOS DNS相关的的配置文件
路径:/etc/resolvconf
文件内配置项说明
复制代码
代码如下:
#最重要的就是nameserver,其他可以忽略
nameserver 8888 #google域名服务器
nameserver 8844 #google域名服务器
#search mitchellchucom wwwmitchellchucom #定义域名的搜索列表
#domain mitchellchucom #定义本地域名
#sortlist #对返回的域名进行排序
网络设备重启
service network restart
或
/etc/initd/network restart
IP地址修改
即时生效:
ifconfig eth0 19216802 netmask 2552552550
重新启动网络设备后生效
参见 /etc/sysconfig/network-scripts/ifcfg-eth数字 的修改
修改当前网关 Default Gateway
即时生效:
route add default gw 19216801 dev eth0
重启网络设备后生效:
参见:/etc/sysconfig/network的配置
修改DNS
参见:/etc/resolvconf配置
修改后即时生效
修改主机名
即时生效:
hostname centos1
重新启动生效:
参见:/etc/sysconfig/network配置,注意这里还有/etc/hosts的配置
网络配置的CentOS官方帮助:http://wwwcentosorg/docs/5/html/Deployment_Guide-en-US/ch-networkscriptshtml
# uname -a # 查看内核/操作系统/CPU信息 \x0d\# cat /etc/issue \x0d\# cat /etc/redhat-release # 查看操作系统版本 \x0d\# cat /proc/cpuinfo # 查看CPU信息 \x0d\# grep MemTotal /proc/meminfo # 查看内存总量\x0d\# hostname # 查看计算机名 \x0d\# lspci -tv # 列出所有PCI设备 \x0d\# lsusb -tv # 列出所有USB设备 \x0d\# lsmod # 列出加载的内核模块 \x0d\# env # 查看环境变量
0条评论