我知道如何使用 ssh 连接到某个端口。
ssh user@remotehostip -p XXX
Run Code Online (Sandbox Code Playgroud)
有没有办法从我的本地计算机将使用的端口建立 ssh ?
我想知道:在安装某些东西时,有一种双击安装可执行文件的简单方法,另一方面,有一种从源代码构建它的方法。
后一个,下载一个源包,真的很麻烦。
但是这两种方法之间的根本区别是什么?
我已登录到远程服务器并尝试显示 x 应用程序(例如 firefox)。但出现错误信息。以下是我打开 Firefox 的尝试
Black@Black-PC ~
$ ssh -X kwagjj@$labserver -p 122
[kwagjj@James5 ~]$ firefox
Error: no display specified
[kwagjj@James5 ~]$ exit
logout
Connection to 143.248.146.204 closed.
Black@Black-PC ~
$ ssh -Y kwagjj@$labserver -p 122
[kwagjj@James5 ~]$ firefox
Error: no display specified
[kwagjj@James5 ~]$
Run Code Online (Sandbox Code Playgroud)
我使用 -X、-Y 是因为我在某处读到这两个选项与有关 X11 的凭据有关,这些开关将为我完成这项工作。即使没有 -X、-Y 开关,我的尝试也失败了。
“未指定显示”错误是什么意思?
PS奇怪的是,如果我通过我的PUTTY连接到远程服务器并重复命令'firefox'它可以工作吗?!?!(firefox显示在本地计算机上)
PS 我的本地计算机是 Windows 7,所以我在后台运行 Xming 以允许 X11 显示。至于上面写的尝试,命令是在 Cygwin 终端输入的。
我正在自己研究“操作系统概念”,我正在研究 chp3。过程部分。
有一个示例,其中调用 'fork()' 函数并取决于返回的 pid 值,如下所示:
pid=fork();
if(pid<0){ //error stuff
}
else if(pid==0){
// child process stuff
}
else{
// parent process stuff
}
Run Code Online (Sandbox Code Playgroud)
这里让我感到困惑的是,如果执行此代码,在 'if's 的三种情况中,只会执行一种,这意味着只会执行父/子过程中的一种。
但是更仔细地阅读,我发现有一句话帮助我解决了困惑,但并不完全。
新进程由原始进程地址空间的副本组成。
根据我的想象,我猜这意味着每当执行“fork()”调用时,当原始 c 代码将作为“父”运行时,此代码的精确副本将被复制并作为“子”进程运行.
我理解正确吗?
另外,“地址空间”与此有什么关系?再次,使用我的想象力,我假设,由于父代码的执行意味着代码被加载到 RAM 并在其中将分配给代码的 RAM 段执行,因此该段将被复制到其他地方的新段位于 RAM 中并分配给子进程。
我的理解正确吗?
在深入研究 X Windows 或 X11 的东西时
我发现 X display 使用 MIT-MAGIC-COOKIE 来允许客户端-服务器交换显示数据。
我不明白的一件事是我能够使用命令在服务器(Xclient)中定位和查看 MIT-MAGIC-COOKIE
xauth list
Run Code Online (Sandbox Code Playgroud)
我看到类似的东西
James5/unix:10 MIT-MAGIC-COOKIE-1 1bcafdd569b2e1e6dd0dfaf446f437a6
James5/unix:13 MIT-MAGIC-COOKIE-1 5e536e4c17c94372ebc932f6d1c43abc
James5/unix:15 MIT-MAGIC-COOKIE-1 999ac8b086f2f8091aa970f40b739ff4
James5/unix:11 MIT-MAGIC-COOKIE-1 89287e67dfc851c5e7188fc5b7e4dc31
Run Code Online (Sandbox Code Playgroud)
但据我所知,用户端也应该有这个 cookie,以便从接收到的 X 显示数据中比较 cookie。
但是当我回到我的“用户端”笔记本电脑并输入时
Black@Black-PC ~
$ xauth list
Run Code Online (Sandbox Code Playgroud)
出现这样的错误信息...
xauth: file /home/Black/.Xauthority does not exist
Run Code Online (Sandbox Code Playgroud)
我到底在哪里可以找到用户端的 .Xauthority 文件?
当我输入df -h查看系统存储时,结果如下
root@kch-rsp:/home/pi# df -h
Filesystem Size Used Avail Use% Mounted on
rootfs 13G 2.4G 10G 20% /
/dev/root 13G 2.4G 10G 20% /
devtmpfs 215M 0 215M 0% /dev
tmpfs 44M 228K 44M 1% /run
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 88M 0 88M 0% /run/shm
/dev/mmcblk0p5 60M 9.4M 50M 16% /boot
Run Code Online (Sandbox Code Playgroud)
对于这个结果有几个疑问:
为什么有多个tmpfs?我知道这是一个交换空间,但是当我执行时swapon -s,我只看到一个交换空间。
root@kch-rsp:/home/pi# swapon -s
Filename Type Size Used Priority
/var/swap file 102396 0 -1
Run Code Online (Sandbox Code Playgroud)therootfs和/dev/root …
从我的本地机器 Issh到远程服务器以及有关 X 显示的身份验证。我知道在这个过程中,MIT-MAGIC-COOKIES使用了并且服务器和客户端中的值需要相同才能使身份验证过程有效。
但是,当我登录到远程服务器并确认 X 显示内容运行良好时(例如执行xclock以查看xclock应用程序是否在我的本地机器中弹出),当我检查 cookie 的值时,本地机器中的值而在远程服务器中似乎有所不同。这是命令行:
chulhyun@chulhyun-Inspiron-3420:~$ ssh -X Black@$labcom
Last login: Wed Jun 25 10:02:25 2014 from
Black@Black-PC ~
$ xclock ### xclock appears in local machine.
Black@Black-PC ~
$ xauth list
Black-PC/unix:10 MIT-MAGIC-COOKIE-1 708f623489b1ea129a77e98287d130ca
Run Code Online (Sandbox Code Playgroud)
chulhyun@chulhyun-Inspiron-3420:~$ xauth list
chulhyun-Inspiron-3420/unix:0 MIT-MAGIC-COOKIE-1 5ddd2ce92004eab53ceee8a64b7b88c0
Run Code Online (Sandbox Code Playgroud)
如您所见,两台机器中的 cookie 值是不同的。那么X显示不应该不起作用吗?
我在这里缺少什么?
PS我听说它$XAUTHORITY包含xauthority文件的路径,我已经在本地机器中检查了该路径:
chulhyun@chulhyun-Inspiron-3420:~$ echo $XAUTHORITY
/var/run/gdm/auth-for-chulhyun-iZfH2u/database
Run Code Online (Sandbox Code Playgroud)
当我查看“数据库”文件时,内容不可读,因为内容由奇怪的字符组成。
^A^@^@^Vchulhyun-Inspiron-3420^@^A0^@^RMIT-MAGIC-COOKIE-1^@^P]?,? ^D??<??? K{??
Run Code Online (Sandbox Code Playgroud)
这可能与问题有关吗?
的结果xhost …
虽然我总是登录 CentOS 服务器进行模拟,但它让我想到:
为什么即使我的会话关闭,我也不能继续运行模拟?
我知道当会话结束或用户退出时,
会话生成的任何进程也将终止。
有没有办法让进程自己继续运行
即使会话已关闭?
-- 一个没有太多 Unix 背景的用户提出的一个愚蠢的问题:)
这是我从有关端口转发的问题中得到的答案,但我不确定这意味着什么..
$ ssh lab_desktop -L 2200:lab_server:22 -vvv
Run Code Online (Sandbox Code Playgroud)
我的疯狂猜测:
首先连接到lab_desktop,然后再次登录lab_server(端口22),从此连接接收到的数据将转发到lab_desktop,端口2200。
我的猜测对吗??
但我仍然不明白'-vvv'是什么意思......
应用答案后更新:
同意小溪的有用回答和评论,我尽我所能让小溪的回答有效
再次,让我清楚术语
mypc - 负责打字的那个
lab_desktop - ssh 服务器
lab_server- 我想与之交流的最终目的地。此服务器将只允许从 连接lab_desktop。还有一件事:它只允许通过端口 122 进行连接。
好的,因为登录lab_desktop并lab_server需要用户名和密码,我只是为mypc--lab_desktop 和lab_desktop--进行了 rsa 身份验证,lab_server这样我就不会遇到一直输入密码的麻烦,只是为了排除输入密码的可能性ssh 命令比较复杂。
之后我使用了命令:
ssh Black@lab_desktop -v -L 2200:lab_server:122
下面是输出
chulhyun@chulhyun-Inspiron-3420:~/.ssh$ ssh Black@$labcom -v -L 2200:143.248.146.204:122
OpenSSH_5.9p1 Debian-5ubuntu1.4, OpenSSL 1.0.1 14 Mar 2012
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: Applying options for *
debug1: Connecting …Run Code Online (Sandbox Code Playgroud) 例如,我打字sudo apt-get update,然后几分钟内就会出现一长串内容。
如果我想避免看到这个令人厌烦的更新并再次控制 bash 命令行(不退出原始命令),
有没有热键或类似的东西来做到这一点?
我有一台连接到 Wi-Fi 的笔记本电脑,假设我正在测试与网站的连接(“randomwebsite.com”,IP:123.123.123.123)
通过终端,我测试了 ping:
kwagjj@kwagjj-Inspiron-3420:~$ ping www.google.com
PING www.google.com (173.194.72.106) 56(84) bytes of data.
64 bytes from tf-in-f106.1e100.net (173.194.72.106): icmp_seq=1 ttl=45 time=74.0 ms
64 bytes from tf-in-f106.1e100.net (173.194.72.106): icmp_seq=2 ttl=45 time=77.8 ms
^C
--- www.google.com ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1001ms
rtt min/avg/max/mdev = 74.063/75.946/77.830/1.903 ms
kwagjj@kwagjj-Inspiron-3420:~$ ping randomwebsite.com
PING randomwebsite.com (123.123.123.123) 56(84) bytes of data.
^C
--- randomwebsite.com ping statistics ---
4 packets transmitted, 0 received, 100% packet loss, time 2999ms …Run Code Online (Sandbox Code Playgroud)