查看linux的ssh端口查看Linux的ssh
如何在linux下配置ssh和sftp使用不同的端口号?
1、两个deamon
要实现ssh和sftp分离,分别监听不同的端口,可以通过创建两个‘/usr/sbin/sshd’后台程序,一个监听22端口(ssh),一个监听20022端口(sftp),为了区分ssh和sftp服务的后台程序,这里将ssh服务的后台程序保持为/usr/sbin/sshd,而将sftp服务的后台程序改为/usr/sbin/sftpd。/usr/sbin/sftpd是/usr/sbin/sshd的一个链接,其内容完全相同(ln-sf/usr/sbin/sshd/usr/sbin/sftpd)。
2、两个service
SLES12使用systemd管理系统服务,ssh服务对应/usr/lib/systemd/system/sshdservice文件,实现sftp服务时可以将/usr/lib/systemd/system/sshdservice复制到/etc/systemd/system/sftpdservice,然后修改sftpdservice文件内容。(使用修改好的sftpdservice文件即可)
3、其他文件系统的ssh服务是通过安装openssh实现的,可以通过rpm-qlopenssh查看该rpm包含哪些文件。总结实现ssh和sftp分离的相关的文件有:
ssh服务sftp服务
/usr/lib/systemd/system/sshdservice/etc/systemd/system/sftpdservice(通过修改/usr/lib/systemd/system/sshdservice文件得到)
/etc/pamd/sshd/etc/pamd/sftpd(通过复制/etc/pamd/sshd文件得到)
/etc/ssh/sshd_config/etc/ssh/sftpd_config(通过复制/etc/ssh/sshd_config文件得到)
/usr/sbin/rcsshd/usr/sbin/rcsftpd(ln-sf/usr/sbin/service/usr/sbin/rcsftpd)
/usr/sbin/sshd/usr/sbin/sftpd(ln-sf/usr/sbin/sshd/usr/sbin/sftpd)
/etc/sysconfig/ssh/etc/sysconfig/sftp(通过修改/etc/sysconfig/ssh文件得到)
至此,我们已经实现了两个服务。
但是,ssh服务和sftp服务并没有真正的分离,此时已然可以通过22号端口使用ssh服务和sftp服务,而新开的20022端口也可以使用ssh服务(ssh-p20022username@serverip)和sftp服务(sftp-oPort=20022username@serverip)。
4、关闭22号端口下的sftp服务编辑/usr/sbin/sshd的配置文件/etc/ssh/sshd_config文件,将Subsystem参数注释掉,然后重启sshd同时也可以设置可访问22号端口的用户白名单:编辑/etc/ssh/sshd_config文件,设置AllowGroups参数(假设设置为AllowGroupssshonly),限制仅AllowGroups组内的用户可通过22号端口ssh登录系统(对于需要ssh登录系统的用户可通过usermod-Asshonlyusername>将其加入到AllowGroups组内)
5、“关闭20022号端口下的ssh服务”sftp作为一个子服务,它的开启依赖于ssh服务,因此不能从本质上关闭ssh服务而只开启sftp服务。可以用以下方式来规避:/usr/sbin/sftpd的配置文件/etc/ssh/sftpd_config中包含Subsystem参数配置(推荐使用Subsystemsftpinternal-sftp-lINFO-fAUTH)/etc/ssh/sftpd_config中包含AllowGroups参数(假设为AllowGroupssftponly),限制仅AllowGroups组内的用户可以访问20022端口将AllowGroups组内的用户的shell改为/bin/false(usermod-s/bin/falseusername>),使AllowGroups组内的用户仅能sftp登录系统(如果一个用户即需要ssh,又需要sftp,则不能将其shell改为/bin/false)
6、用户白名单配置配置之后,需将系统内需要ssh访问系统的用户加入到sshonly组内,需将系统内需要sftp访问系统的用户加入到sftponly组,同时需要ssh和sftp的用户则sshonly和sftponly组都要加入。
7、重启ssh服务和sftp服务,并设置开机启动
servicesshdrestartservicesftpdrestart
linux怎么通过ssh访问另一台服务器?
举例说明: 如用root帐号连接一个IP为1921681102的机器,输入:“ssh1921681102-lroot”, 回车后输入root帐号的密码再回车确认即可。 如果该服务器的ssh端口不是默认的22端口,是自定义的一个如1234,则可在命令后面加参数-p, 如:“ssh1921681102-lroot-p1234”
在Linux系统下使用SSH实现端口映射的方法?
从技术角度来分析,几个要求:
1、从安全方面看,sftp会更安全一点
2、线上服务器提供在线服务,对用户需要控制,只能让用户在自己的home目录下活动
3、用户只能使用sftp,不能ssh到机器进行操作
提供sftp服务,可以用系统自带的internal-sftp,也可以使用vsftpd,这里需求不多,直接选用internal-sftp。
限制用户只能在自己的home目录下活动,这里需要使用到chroot,openssh48p1以后都支持chroot,我现在用的是centos63,自带的openssh已经是53p1,足够了。
可以输入:
#ssh-v
来查看openssh的版本,如果低于48p1,需要自行升级安装,不在这里具体介绍了。
假设,有一个名为sftp的组,这个组中的用户只能使用sftp,不能使用ssh,且sftp登录后只能在自己的home目录下活动
1、创建sftp组
#groupaddsftp
2、创建一个sftp用户,名为mysftp
#useradd-gsftp-s/bin/falsemysftp
#passwdmysftp
3、sftp组的用户的home目录统一指定到/data/sftp下,按用户名区分,这里先新建一个mysftp目录,然后指定mysftp的home为/data/sftp/mysftp
#mkdir-p/data/sftp/mysftp
#usermod-d/data/sftp/mysftpmysftp
4、配置sshd_config
编辑/etc/ssh/sshd_config
#vim+132/etc/ssh/sshd_config
找到如下这行,并注释掉
subsystemsftp/usr/libexec/openssh/sftp-server
添加如下几行
subsystemsftpinternal-sftp
matchgroupsftp
chrootdirectory/data/sftp/%u
forcecommandinternal-sftp
allowtcpforwardingno
x11forwardingno
解释一下添加的几行的意思
subsystemsftpinternal-sftp
这行指定使用sftp服务使用系统自带的internal-sftp
matchgroupsftp
这行用来匹配sftp组的用户,如果要匹配多个组,多个组之间用逗号分割
当然,也可以匹配用户
matchusermysftp
这样就可以匹配用户了,多个用户名之间也是用逗号分割,但我们这里按组匹配更灵活和方便
chrootdirectory/data/sftp/%u
用chroot将用户的根目录指定到/data/sftp/%u,%u代表用户名,这样用户就只能在/data/sftp/%u下活动,chroot的含义,可以参考这里:http://wwwibmcom/developerworks/cn/linux/l-cn-chroot/
forcecommandinternal-sftp
指定sftp命令
allowtcpforwardingno
x11forwardingno
这两行,如果不希望该用户能使用端口转发的话就加上,否则删掉
5、设定chroot目录权限
#chownroot:sftp/data/sftp/mysftp
#chmod755/data/sftp/mysftp
错误的目录权限设定会导致在log中出现”fatal:badownershipormodesforchrootdirectoryxxxxxx”的内容
目录的权限设定有两个要点:
1、由chrootdirectory指定的目录开始一直往上到系统根目录为止的目录拥有者都只能是root
2、由chrootdirectory指定的目录开始一直往上到系统根目录为止都不可以具有群组写入权限
所以遵循以上两个原则
1)我们将/data/sftp/mysftp的所有者设置为了root,所有组设置为sftp
2)我们将/data/sftp/mysftp的权限设置为755,所有者root有写入权限,而所有组sftp无写入权限
6、建立sftp用户登入后可写入的目录
照上面设置后,在重启sshd服务后,用户mysftp已经可以登录,但使用chroot指定根目录后,根应该是无法写入的,所以要新建一个目录供mysftp上传文件。这个目录所有者为mysftp,所有组为sftp,所有者有写入权限,而所有组无写入权限
#mkdir/data/sftp/mysftp/upload
#chownmysftp:sftp/data/sftp/mysftp/upload
#chmod755/data/sftp/mysftp/upload
7、重启sshd服务
#servicesshdrestart
到这里,mysftp已经可以通过sftp客户端登录并可以上传文件到upload目录。
如果还是不能在此目录下上传文件,提示没有权限,检查selinux是否关闭,可以使用如下指令关闭selinux
修改/etc/selinux/config文件中的selinux=""为disabled,然后重启。或者
#setenforce0
如何关闭linux下的ssh服务?
chkconfig--level2345sshdon--level指定系统在2345运行级别时,通常在35中开启就行,开启(on)sshd服务,关闭则用(off)临时控制启动停止则用:/etc/rcd/initd/sshdstart|stop|restart
ssh只能登linux吗?
ssh并不是只能登linux操作系统。ssh是unix操作系统用于远程登录的程序。
ssh的开源免费版是openssh,它源于openBSD操作系统。在服务器端启用sshd之后,就可以从远程登录服务器。目前所有类unix的操作系统都操供ssh服务。所以ssh能登录所有类unix操作系统。
一般网站源码是放在服务器上,要编辑源码的话有以下几种方式:
可见,以上3种方式有各自的优缺点。现在轮到我们的主角 GIT+sublime+sftp插件 登场啦~
用 GIT+sublime+sftp插件 有以下优缺点:
好了,废话不多说,(如果想知道怎么用GIT自动部署的可以留言哈~),开始说下如何用 GIT+sublime+sftp插件
注意: 以上内容需一模一样复制黏贴,只修改其中 服务器IP 、 FTP用户名 、 FTP密码 。
网络上的很多SFTP配置会导致以下BUG:上传到服务器时,sublime经常显示上传失败、连接FTP需要很长时间等。以上贴的SFTP配置,是我经过谷歌搜索,结合很多配置文件弄出来的,现在稳定使用中,一次性保存50个以上文件也是没有一个上传失败的,而且很快速,故贴出来分享给大家~
好了,现在只要保存文件,sublime就会将该文件自动同步到服务器了!而且需要更新本地文件为服务器文件时,只需要右键该文件,然后按SFTP的菜单对应操作即可。
最后,安装下GIT,推荐使用sublime配套的 Subime Merge ,这是图形化界面的git客户端,很牛很强大!!
以上,谢谢~
有问题请留言,可以一起探讨~
如果你访问过较新版本的Mac OS X中的“共享首选项”面板,则可能已经注意到不再允许FTP服务器共享文件和文件夹的直接选项。至少没有一个明显的选择,但FTP和SFTP服务器功能仍然存在,这两个刚分裂成不同的功能,新版本的OS X喜欢SFTP而不是FTP。无论你想要使用什么,为其中任何一个设置服务器都非常简单,下面将介绍如何在OS X中启动FTP或SFTP服务器。
这将启动Mac上的通用FTP和FTPS服务器,但不是SFTP服务器:
如果你看到熟悉的FTP登录:
那么说明服务器正在运行。如果你没有看到,那么服务器还没有完成启动,或者你没有正确输入命令。然后,你可以通过相同的ftp命令,或使用Finder中的“连接到服务器”选项进行FTP。
正如你可能知道的那样,FTP是未加密的,因此出于安全考虑而失宠。现在在Mac上启用SFTP实际上比FTP更容易:
你可以通过在命令行输入以下内容来验证SFTP是否正常工作:
注意: FTP和SFTP服务器是不同的,启用一个不启用另一个。建议使用SFTP,因为默认加密层和安全传输。
以下是如何禁用FTP服务器的方法:
如命令所示,这将卸载ftp守护进程并关闭服务器。你只能关闭和禁用FTP服务器。而禁用SFTP只是取消选中位于OS X的“共享首选项”面板中的“远程登录”框。
1、打开Linux文件查看有哪些权限。
2、使用chown 命令,修改文件test1txt的所有者为demo1_1,所有组为group_1。使用chmod 命令,修改文件权限为 0750(- rwx r-x r-x)。
3、切换用户demo2,对文件test1txt,应该没有任何权限。
4、切换用户demo1_1,对文件test1txt,应该有所有权限。
5、权限修改完成。
注意事项:
Linux用户分三种,超级用户,普通用户,伪用户,超级用户拥有所有权限,伪用户一般和进程相关,无需登录系统,所以常说的管理用户权限指的是管理Linux中普通用户的权限。
从技术角度来分析,几个要求:
1、从安全方面看,sftp会更安全一点
2、线上服务器提供在线服务,对用户需要控制,只能让用户在自己的home目录下活动
3、用户只能使用sftp,不能ssh到机器进行操作
提供sftp服务,可以用系统自带的internal-sftp,也可以使用vsftpd,这里需求不多,直接选用internal-sftp。
限制用户只能在自己的home目录下活动,这里需要使用到chroot,openssh 48p1以后都支持chroot,我现在用的是CentOS 63,自带的openssh已经是53p1,足够了。
可以输入:
# ssh -V
来查看openssh的版本,如果低于48p1,需要自行升级安装,不在这里具体介绍了。
假设,有一个名为sftp的组,这个组中的用户只能使用sftp,不能使用ssh,且sftp登录后只能在自己的home目录下活动
1、创建sftp组
# groupadd sftp
2、创建一个sftp用户,名为mysftp
# useradd -g sftp -s /bin/false mysftp
# passwd mysftp
3、sftp组的用户的home目录统一指定到/data/sftp下,按用户名区分,这里先新建一个mysftp目录,然后指定mysftp的home为/data/sftp/mysftp
# mkdir -p /data/sftp/mysftp
# usermod -d /data/sftp/mysftp mysftp
4、配置sshd_config
编辑 /etc/ssh/sshd_config
# vim +132 /etc/ssh/sshd_config
找到如下这行,并注释掉
Subsystem sftp /usr/libexec/openssh/sftp-server
添加如下几行
Subsystem sftp internal-sftp
Match Group sftp
ChrootDirectory /data/sftp/%u
ForceCommand internal-sftp
AllowTcpForwarding no
X11Forwarding no
解释一下添加的几行的意思
Subsystem sftp internal-sftp
这行指定使用sftp服务使用系统自带的internal-sftp
Match Group sftp
这行用来匹配sftp组的用户,如果要匹配多个组,多个组之间用逗号分割
当然,也可以匹配用户
Match User mysftp
这样就可以匹配用户了,多个用户名之间也是用逗号分割,但我们这里按组匹配更灵活和方便
ChrootDirectory /data/sftp/%u
用chroot将用户的根目录指定到/data/sftp/%u,%u代表用户名,这样用户就只能在/data/sftp/%u下活动,chroot的含义,可以参考这里:http://wwwibmcom/developerworks/cn/linux/l-cn-chroot/
ForceCommand internal-sftp
指定sftp命令
AllowTcpForwarding no
X11Forwarding no
这两行,如果不希望该用户能使用端口转发的话就加上,否则删掉
5、设定Chroot目录权限
# chown root:sftp /data/sftp/mysftp
# chmod 755 /data/sftp/mysftp
错误的目录权限设定会导致在log中出现”fatal: bad ownership or modes for chroot directory XXXXXX”的内容
目录的权限设定有两个要点:
1、由ChrootDirectory指定的目录开始一直往上到系统根目录为止的目录拥有者都只能是root
2、由ChrootDirectory指定的目录开始一直往上到系统根目录为止都不可以具有群组写入权限
所以遵循以上两个原则
1)我们将/data/sftp/mysftp的所有者设置为了root,所有组设置为sftp
2)我们将/data/sftp/mysftp的权限设置为755,所有者root有写入权限,而所有组sftp无写入权限
6、建立SFTP用户登入后可写入的目录
照上面设置后,在重启sshd服务后,用户mysftp已经可以登录,但使用chroot指定根目录后,根应该是无法写入的,所以要新建一个目录供mysftp上传文件。这个目录所有者为mysftp,所有组为sftp,所有者有写入权限,而所有组无写入权限
# mkdir /data/sftp/mysftp/upload
# chown mysftp:sftp /data/sftp/mysftp/upload
# chmod 755 /data/sftp/mysftp/upload
7、重启sshd服务
# service sshd restart
到这里,mysftp已经可以通过sftp客户端登录并可以上传文件到upload目录。
如果还是不能在此目录下上传文件,提示没有权限,检查SElinux是否关闭,可以使用如下指令关闭SElinux
关于Linux命令的介绍,看看《linux就该这么学》,具体关于这一章地址3w(dot)linuxprobe/chapter-02(dot)html
修改/etc/selinux/config文件中的SELINUX="" 为 disabled ,然后重启。或者
# setenforce 0
在左窗格中,单击“接收端口”节点,在右窗格中,右键单击你希望将新的接收位置与其关联的接收端口,然后单击“属性”。在“接收端口属性”对话框的左窗格中,选择“接收位置”,然后在右窗格中单击“新建”以创建新的接收位置。在“接收位置属性”对话框的“传输”部分中,从“类型”下拉列表中选择“SFTP”,然后单击“配置”以配置接收位置的传输属性。在“SFTP 传输属性”对话框的“常规”选项卡中,执行以下操作:�0�2 使用此选项 执行此操作 ConnectionLimit指定服务器允许的并行打开的最大连接数。0 表示无限制。PollingInterval指定适配器轮询服务器的时间间隔。若要连续轮询,请将此值设置为零。默认值:零单位指定所指定的轮询间隔的单位,例如,秒、分钟、小时或天。默认值:秒AccessAnySSHServerHostKey如果设置为 True,则接收位置接受来自服务器的任何 SSH 公共主机密钥。如果设置为 False,则接收位置使用服务器的指纹进行身份验证。你在 SSHServerHostKeyFingerPrint 属性中指定指纹。默认值:FalseClientAuthenticationMode指定接收位置用于对连接 SSH 服务器的客户端进行身份验证的身份验证方法。如果设置为“密码”,则必须在“密码”属性中指定值。如果设置为 PublicKeyAuthentication,则必须在 PrivateKey 属性中指定用户的私钥。此外,如果该私钥受密码保护,则还要为 PrivateKeyPassword 属性指定密码。默认值: 密码密码如果将 ClientAuthenticationMode 设置为“密码”,则指定 SFTP 用户密码。PrivateKey如果将 ClientAuthenticationMode 设置为 PublicKeyAuthentication,则指定 SFTP 用户的私钥。便笺 该私钥必须是指定的 pkf 文件。PrivateKeyPassword指定私钥密码,如果在 PrivateKey 属性中指定的密钥要求这样做。SSHServerHostKey指定安全 FTP 服务器的 SSH 公共主机密钥。用户名指定安全 FTP 服务器的用户名。FileMask指定在从安全 FTP 服务器检索文件时要使用的文件掩码。FolderPath指定安全 FTP 服务器上可供接收位置从中检索文件的文件夹路径。端口指定在其上进行文件传输的安全 FTP 服务器的端口地址。ServerAddress指定安全 FTP 服务器的服务器名称或 IP 地址。单击“确定”。
ssh服务自带了一个sftp服务,该服务是基于ssh协议的ftp服务,但是安全性更高于ftp。我们使用xshell软件、secureCRT或者xftp都可以连接,其中xftp是完全图形化操作的。
Xftp下载地址:http://www/softs/81853html
在xftp里新建一个连接,注意协议需要选择SFTP,然后依次填写IP、账户和密码并连接登录。
默认进入的是用户的 /root 目录下。此时就可以将文件上传到服务器里了。需要注意的是这时候上传的文件的拥有者和拥有组都是当前登录的用户,如果是上传网站文件这个时候就要注意了,后期可能还是需要调整这些文件的拥有者和拥有组。
0条评论