OpenSSH用于Linux下远程控制(当然windows也能),不需要图形化界面
分为客户端和服务端,客户端是想要控制别人的一方,服务端是被控制的一方
准备工作
在Linux上使用SSH时,需要先检查是否已安装了SSH,使用的命令是
dpkg --list | grep ssh
输出结果当中如果只有client,没有server,那也依然需要执行安装命令:
sudo apt-get install ssh
启动SSH服务
比较好记的命令:
service ssh start 启动ssh
service ssh stop 关闭ssh
service ssh restart 重启ssh
当然也可以敲如下命令:
/etc/init.d/ssh start 启动ssh
/etc/init.d/ssh stop 关闭ssh
/etc/init.d/ssh restart 重启ssh
登陆
登录对方的终端时,要确保在同一局域网,可以先ping一下对方ip地址,如果不通,检查后还是ping失败,那么十有八九就是网的问题,可以试试换一个网,比如开个热点
可以正常网络通信的情况下,可以参照以下格式远程登陆:
ssh -p 22 user@host
其中22是默认端口号
其中user填对方用户名
host填对方的ip地址(Linux查ip地址用ifcongfig,如果报错说没这个命令,那么依据提示,安装一下相应的包)
接着输入对方开机密码,就可以操控对方的终端了
登出
输入logout
或者exit
即可登出
实现免密登陆
在对对方进行某些需要权限的操作时,一方面需要对方设置文件夹权限为允许读写,另一方面,需要频繁地输入对方密码,如果对方密码很复杂,那就很繁琐
那么就有必要采用密钥进行免密登陆,逻辑是公钥自己留一份、发给对方一份,然后通过比对,如果相同那么就不需要输入密码的交互了(当然首次登陆的时候还是要输密码的,只是登陆后的操作不再需要输入密码的交互),而私钥一般不给人
以下是客户端的操作
ssh-keygen
这命令也能用,不过可以写的具体一点
ssh keygen -t rsa
然后敲三下回车就可以了,密码输不输入无所谓
使用如下命令:
ssh-copy-id -i id_rsa.pub test@192.168.46.136
这个代码适用于从id_rsa.pub所在文件夹内打开终端
如果在别的地方,可以把id_rsa.pub换成其所在路径
作用是把公钥给对方一份,对方~/.ssh下会出现一个authorized_keys文件,那么这就算是成功了
接着再输入:
ssh user@host
就可以方便的访问并读写对方了
还是user是对方用户名
host是ip地址,就可以
scp命令来传输文件、文件夹
从本地主机传输文件到远程主机
scp [本地文件路径] [用户名]@[远程主机IP地址]:[目标路径]
从远程主机传输文件到本地主机
scp [用户名]@[远程主机IP地址]:[远程文件路径] [本地目标路径]
传输文件夹(从本地到远程主机)
scp -r [本地目录路径] [用户名]@[远程主机IP地址]:[目标路径]
传输文件夹(从远程主机到本地)
scp -r [用户名]@[远程主机IP地址]:[远程文件路径] [本地目标路径]
有特点:
命令的参数中待操作的文件路径在前,目标路径在后(这样就不用想着客户端和服务端绕来绕去了),并且用户名和ip和目标路径是绑定的整体,传文件不用-r,传文件夹用-r
推荐文章:
1.OpenSSH安装与使用-Linux
2.Linux下的SCP指令详解