Linux安装/配置/使用/SSH服务

安装SSH服务,配置SSH服务,SSH的常见高级用法; 做开发,关于SSH服务,这一篇就够了。

Linux安装配置SSH服务

ssh服务是什么?

传统的网络服务程序,如:ftppoptelnet在本质上都是不安全的,因为它们在网络上用明文传送口令和数据,别有用心的人非常容易就可以截获这些口令和数据。通过使用SSH,你可以把所有传输的数据进行加密,有效的防止中间人攻击,也能够防止DNS欺骗和IP欺骗。使用SSH,还有一个额外的好处就是传输的数据是经过压缩的,所以可以加快传输的速度。SSH有很多功能,它既可以代替Telnet,又可以为FTPPoP、甚至为PPP提供一个安全的"通道"。

-- 科普完毕,开始Show time!

1. 安装SSH

安装前检查ssh服务状态:
sudo ps -e |grep ssh

如果显示只有ssh-agent, 而没有sshd服务项, 那么你的系统中ssh服务端程序便没有启动, 启动ssh服务:

sudo service ssh start
#或者使用
systemctl start ssh

如果找不到sshd服务,那就说明ssh服务端没有安装。

也可以用查看下端口监听,有没有22端口也可以识别ssh服务是否正常启动。

netstat -nltp|grep :22
红帽系发行版

RedhatCentos 等系列linux发行版,用yum在线安装:

sudo yum install openssh-server
Debian系发行版

UbuntuLinux Mint, Kali等系列的linux发行版,则用apt来在线安装:

sudo apt-get install openssh-server

2. SSH服务常用操作

启动服务

确定安装ssh服务完成后,启动ssh服务:

sudo service ssh start        
#或者
sudo systemctl start ssh    
查看ssh状态:
sudo service ssh status        
#或者
sudo systemctl status ssh    
停止服务
sudo service ssh stop        
#或者
sudo systemctl stop ssh    
ssh服务操作

启动,停止,重启,运行状态等服务操作如下:

sudo service ssh {start/stop/reload/force-reload/restart/try-restart/status}
#或者如下:
systemctl {start/stop/reload/force-reload/restart/try-restart/status} ssh

Redhat7|Centos7|Ubuntu18.04及以上版本使用 systemctl , 老旧旧版本可使用service

3. 配置SSH

3.1 开机自启动
sudo systemctl enable ssh     # 开机自启动
sudo systemctl disable ssh     # 禁止开机启动

有关ssh服务端配置文件 /etc/ssh/sshd_config 的详细都可以用下面这条语句查看获取:

man sshd_config
3.2 更改默认端口:

ssh服务默认使用22端口,若需更改在ssh_config 文件中修改成自己想要的端口.

vim /etc/ssh/sshd_config

Port 22 这一行, 命令模式下x 键 删除#号字符, yy 复制此行内容, p 键复制到下行,并更改成要修改的端口号. 命令模式下:x 保存,或者wq保存. 编辑完后重启下ssh服务:

service sshd restart

两行Port项 的注释都要去掉,上一行是默认端口,下一行是自定义端口.

如果是Centos,Redhat等系发行版,需关闭selinx才能更改端口成功.

3.3 sshd配置文件

sshd 配置文档sshd_config还有很多安全选项可自行更改,具体不细述,可以来一篇Linux系统安全专题细讲下,除非有安全需求;可以用ssh密钥登陆,提高了系统安全性。

4. SSH高级用法

4.1 ssh连接远程主机:

(比如你用Windows连接服务器)

ssh 用户名@IP              
ssh root@192.168.1.22     
# 输入yes回车,输入密码即可登录。端口默认22的情况下,可直接用户名密码连接登录

ssh -P 端口 用户名@IP                 
ssh -P 2522 root@192.168.75.188        
#如果更改了默认端口,则加上参数:大写的P 指定端口。
4.2ssh免密登录远程主机:

比如在Windows上,不想每次登录都输入系统密码。免密登录是利用非对称加密的原理,在本地保存ssh私钥,服务器保存公钥的方法实现的。理论上,在一定基础上提高了账户安全性,因为用用户名密码登录方式的话有被爆破的风险,恰好你又使用了弱口令,即便是普通用户,也可以进一步的进行提权。

先在本地终端生成密钥:

ssh-keygen
# 默认即可,可选 -t 参数选择加密算法,不过不需要,默认就是rsa加密。

连按三次回车,生成完毕。生成有两个文件:id_rsaid_rsa.pub ;一个是私钥,一个是公钥。

如果是Linux,密钥在/home/用户名/.ssh/ 目录中也就是~/.ssh

如果是Windows,密钥便在C:\Users\Administrator/.ssh/ 目录中(自己用户名的文件下)。

在本地生成密钥后,把公钥上传至远程服务器即可:

ssh-copy-id -p 端口 用户名@IP        
ssh-copy-id geek0ne@192.168.8.8        

也可以用scp命令传输到远程服务器,后面有scp用法。

4.3 scp传输文件

不管是Linux与Linux,还是Windows与Linux,互传文件的方法和软件有很多;但只要两台机器上有安装ssh服务,那么就可以使用ssh协议传输文件,用法如下。

  1. 本地上传文件至远程服务器:
scp 文件名 远程用户名@IP:远程目录                
scp demo.c geek0ne@192.168.8.8:/home/geek0ne/Code    
  1. 从远程服务器下载文件:
scp 远程用户名@IP:远程目录/文件 本地目录文件                
scp geek0ne@192.168.8.8:/home/geek0ne/Code/demo.c demo.c     
#把远程目录的文件 下载到本地当前目录 命名为`demo.c`

其实我们发现,上传和下载的语法就是前后调换了位置而已。不仅可传输文件,也能传输文件夹/目录。

注意:
IP地址和目录之间有个冒号不能遗漏,如果冒号后面不是绝对路径,则以用户家目录为参照。
如果更改端口,还是加参数: -P port
如果是目录需要加参数:-r

4.4 ssh配置别名

如果不用shell终端工具,每次登录连接,都要输入ssh 用户名@IP 这一串字符,时间一长,会不会觉得这种重复性的操作有点浪费时间,况且你每次都能准确无误的手敲IP和username么,如果服务器数量一多呢。(用shell终端管理工具的请不要发言 /滑稽

配置别名就能进一步的减少输入,比如用ssh ave 替代连接字符串,方便"偷懒",提高工作效率,毕竟一滴水积少成多,亦能成塘池。在主目录下,~/.ssh/config 里面追加下面内容:

Host ave
    HostName IP
    User geek0ne
    Port 22

追加编辑保存后,就可用ssh ave 来连接远程主机了, scp 命令也同样适用 。

5. 卸载SSH

ssh服务是远程服务器必备服务,当然也可以卸载掉服务端,只留下ssh客户端来主动连接登录其它主机,即便不装sshd 服务也是可以连接远程机器,只是不能被远程主机连接。避免了本机被别的机器进行爆破,减少了安全风险,增加了安全性。下面卸载sshd服务端:

红帽系发行版Redhat, Centos等linux发行版,卸载用以下命令:

sudo yum remove sshd

Debian系发行版,Ubuntu,Linux mint等linux发行版,卸载用以下命令:

sudo apt –purge remove sshd

本文作者:Geek0ne
本文链接:https://geek0ne.com/LinuxAce/ssh.html
本文根据知识共享署名4.0国际许可进行许可,转载/引用请标注来源!

Comments

添加新评论