本文最初发表于 我的个人站点
更详细的解释可以参考 SSH百度百科
简单来理解,就是我拥有一台服务器,我现在想要登录上去做一些事情,那就得使用ssh登录到远程的服务器上,才能在上面进行操作。
一开始在远程服务器上面,需要查看一下他的sshd服务启动了没有,如果没有启动,任何客户端主机是连接不上来的,一般如果是自己在云厂商处购买了主机,主机启动的时候就会把sshd服务启动起来。但有可能自己在测试环境搭建机器的时候,是没有默认启动的,这时候就需要在测试机器的终端看一下,命令如下
如果没有启动的话,那就启动一下,命令如下
这里我在测试环境机器的ip是 192.168.0.187, 我在自己的电脑上想要登录这台机器,我要做的就是使用ssh命令去登录192.168.0.187这台主机
我需要告诉192.168.0.187这台主机我以谁的身份去登录, 192.168.0.187会询问密码,命令如下
敲入正确的密码之后,我们就已经成功登录了主机了
这里看到让我输入一个文件名字来保存密匙,我这里示例就输入一个"foxchao"
回车以后,询问是否要输入一个密码来保护这个密匙,为了方便起见,我就不输入了,不然每次使用这个密匙文件还要输一遍密码,直接一路回车就ok,如下所示
到了这里,可以看到我们已经创建好了密匙对
现在我们新建了自己的密匙对之后,把foxchao.pub这个文件放到目标的机器上,加入目标机器的 authorized_keys 中就可以了,以后登录的时候就可以免去输入密码的步骤。
那我们先用scp放上去 ,关于scp命令,这里不过多介绍,就是传文件的一个命令,使用也比较简单,具体想了解可以看这里 Linux scp命令
这里表示我要把foxchao.pub这个文件拷贝到192.168.0.187这台机器root用户的用户目录下
回车之后会询问密码,输入密码确认之后,文件就传上去了,如下
这时候我们先用密码登上去看看传上去没有
可以看到foxchao.pub这个文件已经传上来了
目标主机上如果没有.ssh文件夹,就自己创建一个,创建好之后,再创建一个authorized_keys文件。如果有的话就不用了。
把刚才的foxchao.pub这个文件内容写进authorized_keys
看一下,已经有内容了
这里需要注意
authorized_keys 文件对权限有哟求,必须是600(-rw——-)或者644
.ssh目录 必须是700(drwx——),否则一会儿登录不成功
弄完之后检查一下权限,如果不是的话,改成响应的权限就ok了
在登录之前,要确认一下目标主机是否允许密匙对登录,一般都是打开的,如果没有打开就自己打开
(查看 /etc/ssh/sshd_config 文件内容 中的 PubkeyAuthentication 这一项是否为 yes,如果不是就自己修改成yes之后重启sshd服务 )
为了避免繁琐的每次都敲一长串 user@host 这样的命令, 可以自己在.ssh 目录下建一个config文件,文件内容如下,想要多了解一下配置参数使用的,可以看 linux ssh_config和sshd_config配置文件
文件建立好之后,直接使用自己定义的别名登录,非常方便快捷
如果是自己局域网搭建的机器,倒不用在意服务器的安全问题,但如果是暴露在公网上的机器,可以通过公网ip登录的,一定要注意自己服务器的安全问题,最起码不能开放默认端口,以及密码登录
在服务器上查看一下登录的日志,可以看到很多想要尝试登陆机器的人,所以公网上面的机器一定要做好自我保护
这里只列出一小部分的日志
统计一下,可以看到有29190次登录失败的记录
我们改掉默认的端口,以及禁用密码登录,只支持密匙对登录,这样一来,提高了服务器本身的安全性,至少没那么容易被别人登录上来为所欲为。
在服务器上修改sshd的配置文件
保存之后,重启sshd服务
使用自己定义的端口登录
Web后端学什么呢?1. 精通jsp,servlet,java bean,JMS,EJB,Jdbc,Flex开发,或者对相关的工具、类库以及框架非常熟悉,如Velocity,Spring,Hibernate,iBatis,OSGI等,对Web开发的模式有较深的理解。2. 熟练使用oracle、sqlserver、mysql等常用的数据库系统,对数据库有较强的设计能力。3. 熟悉maven项目配置管理工具,熟悉tomcat、jboss等应用服务器,同时对在高并发处理情况下的负载调优有相关经验者优先考虑。4. 精通面向对象分析和设计技术,包括设计模式、UML建模等。5. 熟悉网络编程,具有设计和开发对外API接口经验和能力,同时具备跨平台的API规范设计以及API高效调用设计能力。程序手艺人后端入门临门一脚
经历很相似,之前一直从事嵌入式系统的开发,也是机缘凑巧公司内部转岗,切换到公司后端的开发。
背景:切换到后端开发,并不是完全去一家纯互联网公司做后端,而是和之前做嵌入式相关的智能硬件公司。切换到后端,其实就是云端开发,还是涉及和设备/APP通讯的,这样学习起来容易些。
首先熟悉公司后端框架的主体开发语言,这里选择Node.js为主体。
其实后端的难度在于:做服务端开发语言和引擎只是冰山一角,服务端更多的是架构思想,以及对各种中间件、SaaS的了解和运用。
第一步: 学习后端开发的基础知识,比如常用的通信协议,HTTP/HTTPS。 常用的数据库。面向对象编程/函数式编程
第二步:学习Node.js的基本语法,并结合第三方包的使用,比如:express/mongoose/https/multer/fs/
第三步:熟悉云端的开发,这里以AWS为例,了解云主机EC2,存储S3,数据库DynamoDB,无服务架构Lambda的结合使用
第四步:实战开发,比如搭建属于自己的博客或公司内部的项目的开发,其实从零搭建一个个人博客,完全可以入门后端,搭建博客设计的服务器后天,用户数据的存储,前端的显示等等功能。 还有可以实现智能设备的云端升级(OTA)功能,可以明白设备如何和云端通讯的,从而了解了整个框架。
第五步:后续如何深入学习后端呢,需要不断的练习。比如公司项目的各个框架重构,模仿,再创造,如果没有环境,可以针对Node开源库的灵活运用,比如经常看一些第三方的NPM,了解别人的模块怎么实现的,灵活,稳定。
以上五步,肯定不能让你称为资深后端工程师,但是实现嵌入式入门后端开发是没有问题的!
程序手艺人
程序手艺人
深圳米唐科技有限公司 软件团队主管
后端入门临门一脚
经历很相似,之前一直从事嵌入式系统的开发,也是机缘凑巧公司内部转岗,切换到公司后端的开发。
背景:切换到后端开发,并不是完全去一家纯互联网公司做后端,而是和之前做嵌入式相关的智能硬件公司。切换到后端,其实就是云端开发,还是涉及和设备/APP通讯的,这样学习起来容易些。
首先熟悉公司后端框架的主体开发语言,这里选择Node.js为主体。
其实后端的难度在于:做服务端开发语言和引擎只是冰山一角,服务端更多的是架构思想,以及对各种中间件、SaaS的了解和运用。
第一步: 学习后端开发的基础知识,比如常用的通信协议,HTTP/HTTPS。 常用的数据库。面向对象编程/函数式编程
第二步:学习Node.js的基本语法,并结合第三方包的使用,比如:express/mongoose/https/multer/fs/
第三步:熟悉云端的开发,这里以AWS为例,了解云主机EC2,存储S3,数据库DynamoDB,无服务架构Lambda的结合使用
第四步:实战开发,比如搭建属于自己的博客或公司内部的项目的开发,其实从零搭建一个个人博客,完全可以入门后端,搭建博客设计的服务器后天,用户数据的存储,前端的显示等等功能。 还有可以实现智能设备的云端升级(OTA)功能,可以明白设备如何和云端通讯的,从而了解了整个框架。
第五步:后续如何深入学习后端呢,需要不断的练习。比如公司项目的各个框架重构,模仿,再创造,如果没有环境,可以针对Node开源库的灵活运用,比如经常看一些第三方的NPM,了解别人的模块怎么实现的,灵活,稳定。
以上五步,肯定不能让你称为资深后端工程师,但是实现嵌入式入门后端开发是没有问题的!
欢迎分享,转载请注明来源:夏雨云
评论列表(0条)