大概四年前,众多互联网公司还舍不得给程序媛配置mac,清一色的都是用台式机的Windows,我当时也是用的很happy,后来听一位从硅谷归来的朋友讲,在硅谷雇主一般会给大家配发mac,并且 大家都习惯用mac 开发,使用Windows编程 会让雇主严重怀疑你 开发的能力和对事物态度,另外 硅谷的开发同事也会对你带有偏见【用Windows的都是垃圾 或者菜鸟】,当时很不解,也很吃惊,随着今年Microsoft 表示 Windows系统部门将被裁撤,win10未来将不再进行更新维护,Microsoft也不打算再开发新的Windows系统,世人皆惊。背后可能是 Windows放弃最后的挣扎。
假如你已经开始使用ubuntu centos redhat ,你会逐渐喜欢上 Terminal vi emacs ,如果你喜欢不上,可能注定你很low【 哎】,mac 作为 unix系统的商业版本,天生和 linux 内核的服务器系统有很大的相似性,相比 ,Windows 简直就是个异类。
你在Terminal上用习惯的 ssh scp ftp 这些命令 Windows都原装没有,你要安装和开启也非常麻烦,作为普通用户来说你可能只关心能不能挂个QQ 或者微信 ,打开 office ,打开浏览器,但是作为 开发人员,这些Windows都不能人性化的满足我,摔。。。
先说说 mac 如何开启sshd服务 【ssh server]
mac 无法ssh localhost,错误提示:bash: /usr/local/bin/ssh_session: Permission denied
在网上找了很久也没有找到解决方案,最后根据提示自己摸索如下:
1.编辑/etc/sshd_config文件,注释掉
#ForceCommand /usr/local/bin/ssh_session
2.启动sshd服务:
sudo launchctl load -w /System/Library/LaunchDaemons/ssh.plist
3.停止sshd服务:
sudo launchctl unload -w /System/Library/LaunchDaemons/ssh.plist
4查看是否启动:
sudo launchctl list | grep ssh
如果看到下面的输出表示成功启动了:
--------------
- 0 com.openssh.sshd
下面来讲讲怎么 开启 Windows 的ssh 服务
首先来说
ssh 服务 分两部分,一个是client 去连接其他远程服务机器的
一个是server 是作为一个ssh 的主机让别人来连接自己的。
说实话 作为 client这部分比较容易实现,但是作为 server让别人来连接 还真是不太容易,我们怎么来检验 是否这两个服务开启成功了呢
作为 client 就是去连接别人,比如
ssh root@cdhnice ,输入密码加入连接成功,说明 client正常
作为server 那就是 连接自己,比如
ssh user@127.0.0.1, ,输入密码加入连接成功, 说明 server正常
与ssh 相关的文件目录 有
C:\windows\System32\drivers\etc\hosts
C:\Program Files\OpenSSH\bin
首先我们要
我们这次 使用 openssh来开启 服务
https://github.com/PowerShell/Win32-OpenSSH/releases/
下载 OpenSSH-Win32.zip
文件
windows 创建 新用户命令建议在 管理员下的power shell 中进行
首先右键点击开始菜单选择命令提示符(管理员)(windows+x------a)然后输入以下命令实现功能:
添加用户输入:net user 用户名 密码(可选) /add
修改用户密码: net user 用户名 新密码 该命令需权限高于要修改的用户名
删除用户:net user 用户名 /del
然后解压 安装 ,安装成功后 会有一个目录
C:\Program Files\OpenSSH
在这个目录的 bin 下有可执行的 文件
然后建议把这个目录加入到系统的环境变量中
https://jingyan.baidu.com/article/3c343ff7f9b6940d3779632f.html
https://jingyan.baidu.com/article/3c343ff7f9b6940d3779632f.html
之后可以在 git bash 或者 power shell 中尝试使用 ssh 和scp 命令,发现命令可以识别有效,尝试作为client去连接其他机器,如果没有问题,一般会连接成功
然后我们来尝试 ssh server的这一部分
我们 尝试 ssh user@127.0.0.1
回应我们的是
received disconnect from 127.0.0.1 port 22:11
反正是无法连接
然后我们尝试ping
先ping 127.0.0.1 发现ping不通,修改hosts文件
C:\windows\System32\drivers\etc\hosts
在Windows 左下角的home 右键 打开 管理员身份的 power shell [A] 然后去修改 hosts 文件,或者进入hosts文件目录,直接右键这个文件属性 修改权限,反正是修改为可以编辑保存的,添加一行
127.0.0.1 localhost
然后再ping ,发现 127.0.0.1 可以ping通,localhost 也可以ping通,但是 有区别
ping 127.0.0.1 返回的是127.0.0.1,ping localhost 按道理返回的也应该是 127.0.0.1才对,结果却是 ::1,啥意思,其实就是 127.0.0.1 localhost 并没有真实的映射成功,什么导致的呢,其实竟然是 ipv6 优先级高于ipv4 ,没有办法,我们必须让 piv4的高才可以
修改优先级
参考
https://blog.csdn.net/ambertian/article/details/70238020
输入命令 netsh interface ipv6 show prefixpolicies,查询ipv6优先级
netsh int ipv6 set prefix ::/96 50 0
netsh int ipv6 set prefix ::ffff:0:0/96 40 1
netsh int ipv6 set prefix 2002::/16 35 2
netsh int ipv6 set prefix 2001::/32 30 3
netsh int ipv6 set prefix ::1/128 10 4
netsh int ipv6 set prefix ::/0 5 5
netsh int ipv6 set prefix fc00::/7 3 13
netsh int ipv6 set prefix fec0::/10 1 11
netsh int ipv6 set prefix 3ffe::/16 1 12
x修改完后 再次 ping localhost 返回127.0.0.1返回正常,
但是 再尝试 ssh user@127.0.0.1,还是连接被拒绝,说明 ssh 服务还是没有开启
Windows 左下角home 右键 打开 任务管理器,查看服务,发现 openssh sshd服务是停止的状态,还有一个openssh server sshd 也是停止的状态,道理很简单,sshd 这个服务还是没正常开启,
四种方式
1.直接在任务管理器的服务中去手动启动这些服务,按道理这个只能启动一个,好像是互斥的,只要启动一个就可以了,
2.重启电脑,电脑重启后 可能会默认开启sshd 服务,这个尝试后,是可以的,
所以 非常建议你重启电脑再尝试!!!!
3.按照教程套路来
https://o7planning.org/en/11409/installing-openssh-server-on-windows
这个写的比较全面一些
4.安装 cygwin
最后的检验就是再任务管理器查看openssh **sshd这个服务是否有一个正常的运行,然后检验 ssh user@127.0.0.1可以正常的登录
参考
localhost不能访问127.0.0.1可以访问的原因及解决方法
http://www.webkaka.com/tutorial/server/2013/121611/
总之倒腾一天 总算有个结果,其实mac 的ssh server服务默认也不开启,需要手动打开,倒是 mac 自带这个东西,也不需要安装额外的
从Windows安装一个ssh 就这么费劲 ,印证了一个普通的不公平的道理:【你努力的终点可能只是别人的起跑线而已。。】共勉吧,降维打击时常存在,莫不可做被打击的losser