ssh
ssh是linux远程操作和管理服务的重要工具
安装ssh
使用各发行版的包安装工作直接安装即可,这里以ubuntu为例
1
$ sudo apt install ssh
ssh常用命令
ssh连接远程host
使用ssh登录服务器或者局域网下的其他主机是很常用的一种方式,特别在嵌入式开发里.
1
$ ssh host-usename@host-ipaddress
比如:
1
$ ssh root@192.168.1.250
退出远程连接
使用exit
命令就能退出远程连接.
1
$ exit
ssh拷贝文件
scp
是最常用的用来和远程进行数据交互的工具,-r
参数可直接交互整个文件夹
1
2
3
$ scp [[user@]host1:]file1 ... [[user@]host2:]file2
$ scp -r [[user@]host1:]file1 ... [[user@]host2:]file2
host1是拷贝位置,host2是目标位置.则拷贝文件到远程主机,host1是你的主机,host2是远程主机.从远程主机拷贝文件到本地反过来即可.例如:
1
2
$ scp ~/ssh.txt root@10.72.1.16:~ #从本地copy到远程主机
$ scp root@10.72.1.16:~/ssh.txt ~ #从远程主机copy到本地
ssh key
生成ssh key
linux
下可直接在终端通过ssh的命令生成ssh key
1
$ ssh-keygen -t rsa -C "you@email.com"
都选择默认选项就可以生成相应的key
查看生成的key
1
$ cat ~/.ssh/id_rsa.pub
添加到ssh-agent
ssh-agent 就是key管理器,主要用于管理公钥验证使用的私钥。
1
2
$ eval "$(ssh-agent -s)"
$ ssh-add ~/.ssh/id_rsa
Git使用ssh
以github为例,gitlab和gitee是同样的。
添加key到github
打开github页面,打开个人设置
在左边的栏目找到SSH Key
然后在主界面的上面就有一个新增ssh key
的按键
将生成的SSH Key添加到key里,titile可以随意设置
Add SSH Key
以后就添加完成了
测试Git的ssh配置是否成功
1
2
$ ssh -T git@github.com
Hi yan-wyb! You've successfully authenticated, but GitHub does not provide shell access.
看到这个说名配置已经成功了。 之后使用ssh来clone和push代码,就不再需要输入密码了。
1
$ git@github.com:khadas/khadas_docs.git
注意: 以git@
开头的才是使用ssh方式clone
的,以http://
开头的就是使用https://
方式
ssh免密登录
客户端
: 指使用id_rsa
进行ssh登录的端,常常为你正在操作远程登录的PC端,或者部署工具端,如travis
服务端
: 值接受id_rsa.pub
并保存进authorized_keys
的端,常常是服务器如阿里云或者github.
注意: 免密登录对权限极其敏感
客户端操作
首先生成一对秘钥,生成方法可以参考上面的ssh key
,为密钥对设置权限
1
2
$ chmod 600 ~/.ssh/id_rsa
$ chmod 600 ~/.ssh/id_rsa.pub
将公钥添加到服务端的授权文件里
1
$ ssh-copy-id -i ~/.ssh/id_rsa.pub user@xx.x.xx.x /*1.公钥可以使用自定义的;2.user是服务端用户名;3.xx.x.xx.x是服务器地址,也可以使用域名*/
输入远程登录的密码,就添加成功了
服务端操作
服务端只需要设置权限就可以
1
$ chmod 600 ~/.ssh/authorized_keys
测试
客户端使用ssh
登录
1
$ ssh user@xx.x.xx.x
直接登录即为设置成功,需要输入密码应检查权限问题.主目录权限必须小于等于755
ssh端口映射
通过SSH可以将远程端口映射回本地,方便在搭建网站或者Blog时,本地访问,查看效果。
示例,将远程的8888端口,映射到本地的8888端口。
1
$ ssh -L8888:localhost:8888 username@192.168.xx.xxx