SSH 隧道让我很困惑。我想知道我是否可以在 Linux 中做到这一点。
我有3台机器..
A. My local machine at home.
B. Machine at work that I can SSH into (middle man).
C. My desktop at work that I can only SSH into from machine B.
Run Code Online (Sandbox Code Playgroud)
所以我可以从 A -> B 和 B -> C 进行 SSH,但不能从 A -> C 进行 SSH。
有没有办法设置从 A 到 B 的 SSH 隧道,所以当我运行其他 SSH 命令时,它们只能在我的本地机器 A 上工作?我基本上是在尝试将 git repo 从工作克隆到家(并且我无法在机器 B 上安装 git)。
此外,一旦设置.. 我将如何取消设置?
我试图弄清楚如何git init使用不同的默认分支名称而不是master第一次提交,但我找不到它的 git 配置或任何允许我这样做的东西(例如别名仅适用于命令,而不是分支名称)。
有没有办法更改设置的默认第一个分支名称git init?
我在 Unfuddle 上有一个个人帐户和一个公司帐户。在 Unfuddle 上,SSH 密钥只能用于一个帐户,因此我需要在我的笔记本电脑上为两个帐户创建一个单独的 SSH 密钥。我跑去ssh-keygen -t rsa生成两个不同名称的密钥(个人是默认名称,公司是 {company}_rsa)。现在的问题是,我的默认密钥似乎无处不在,我无法找到如何在 Git 中为单个存储库指定要使用的密钥。
所以我的问题是:如何指定要在 repo-to-repo 基础上使用的 SSH 密钥?
我设置了我的 ssh_config (~/.ssh/config) 但它似乎仍然不起作用。
配置:
Host {personalaccount}.unfuddle.com
HostName {personalaccount}.unfuddle.com
User git
IdentityFile /Users/dave/.ssh/id_rsa
Host {companyaccount}.unfuddle.com
HostName {companyaccount}.unfuddle.com
User git
IdentityFile /Users/dave/.ssh/cage_rsa
Run Code Online (Sandbox Code Playgroud)
我的公司 unfuddle 帐户上的仓库的 Git 仓库配置文件如下所示:
[remote "origin"]
url = git@{companyaccount}.unfuddle.com:{companyaccount}/overall.git
fetch = +refs/heads/*:refs/remotes/origin/*
Run Code Online (Sandbox Code Playgroud)
所以我不确定我的 ssh 配置或我的 git 配置是否有问题。
尝试在新 Mac 上设置Homebrew(在以前的 Mac 上,我会从源代码安装软件包)。
我尝试安装的第一个软件包是 Git:
$ brew install git
Run Code Online (Sandbox Code Playgroud)
安装顺利,但which git仍然显示/usr/bin/git与Lion一起出现的那个(我认为?)。而不是/usr/local/bin/git刚刚安装的那个。
$ echo $PATH
/Users/meltemi/.rvm/gems/ruby-1.9.2-p290@rails31/bin:/Users/meltemi/.rvm/gems/ruby-1.9.2-p290@global/bin:/Users/meltemi/.rvm/rubies/ruby-1.9.2-p290/bin:/Users/michael/.rvm/bin:/usr/local/mysql/bin:/opt/subversion/bin:/Developer/Additions/checker/:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin
Run Code Online (Sandbox Code Playgroud)
正如你可以看到/usr/bin默认为之前/usr/local/bin在$PATH
所以,我很困惑!我认为HomeBrew 的重点(以及创作者似乎吹嘘的东西)是您不必弄乱$PATH变量!?!
那么,我做错了什么?
我已经按照http://blog.bitfluent.com/post/27983389/git-utilities-you-cant-live-without添加git-completion.bash到我的/opt/local/etc/bash_completion.d/git-completion
然后我输入PS1='\h:\W$(__git_ps1 "(%s)") \u\$ '了我的 .bashrc_profile
但现在我得到了-bash: __git_ps1: command not found我所做的一切cd。
你能告诉我我错过了什么吗?
我想知道是否存在远程存储库。这是我想出的:
git ls-remote -h "$REPO_URL" &> /dev/null
Run Code Online (Sandbox Code Playgroud)
有没有更好的办法?
我想运行如下命令:
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
Run Code Online (Sandbox Code Playgroud)
我的理解是 ssh-keygen 输出到主目录。我正在使用 Git Bash(Windows,MYSS MINGW64)的联网计算机上工作,其中主目录是我无权访问的目录。我像这样更改主目录:
export HOME=C:/Users/myusername
Run Code Online (Sandbox Code Playgroud)
所以现在当我输入:
echo $HOME
Run Code Online (Sandbox Code Playgroud)
它说:
C:/Users/myusername
Run Code Online (Sandbox Code Playgroud)
但是当我再次尝试运行 ssh-keygen 命令时,它会在我无权访问的目录中运行。我已经查看了一些硬编码路径的配置文件,但找不到任何东西。如何将其更改为指向我有权访问的目录?
我通过 ssh 连接到远程主机(linux、fedora),我想在那里进行 ssh 操作(git 和 bitbucket)。那台机器上正在运行 ssh-agent,
$ ps -e|grep sh-agent
2203 ? 00:00:00 ssh-agent
Run Code Online (Sandbox Code Playgroud)
但是当我想 git 时,它需要我输入密码
$ git pull
Enter passphrase for key '/user/wgong/home/.ssh/id_rsa':
Run Code Online (Sandbox Code Playgroud)
注意:如果我在本地操作那台机器,它不会要求我输入密码