[proofplan]
For the forward implication, we use the characterization of Stein manifolds by smooth strictly plurisubharmonic exhaustion functions. The compact sublevel sets of such a function are nested, exhaust the manifold, and lie in the interiors of the next sublevel sets; the strict plurisubharmonicity gives Stein neighborhoods of every sublevel. For the converse implication, we refine the given exhaustion by Stein compacta to an increasing Runge exhaustion by Stein open subsets, then apply the Behnke-Stein union theorem.
[/proofplan]
[step:Choose a strictly plurisubharmonic exhaustion on the Stein manifold]
Assume first that $X$ is Stein. By the Strictly Plurisubharmonic Exhaustion Characterization of Stein Manifolds, there exists a function
\begin{align*}
\rho: X &\to \mathbb{R}
\end{align*}
with $\rho \in C^\infty(X,\mathbb{R})$, such that $\rho$ is strictly plurisubharmonic and is an exhaustion function. Thus, for every $c \in \mathbb{R}$, the sublevel set $\rho^{-1}((-\infty,c])$ is compact, and
\begin{align*}
X=\bigcup_{c\in\mathbb{R}}\rho^{-1}((-\infty,c]).
\end{align*}
[/step]
[step:Use sublevel sets to produce Stein compacta with nested interiors]
For each integer $j \geq 1$, define
\begin{align*}
K_j := \rho^{-1}((-\infty,j])=\{x\in X:\rho(x)\leq j\}.
\end{align*}
Each $K_j$ is compact because $\rho$ is an exhaustion function. If $j\leq j+1$, then $K_j\subset K_{j+1}$. Also, for every $x\in K_j$ one has $\rho(x)\leq j<j+1$, hence
\begin{align*}
x\in \{y\in X:\rho(y)<j+1\}\subset K_{j+1}.
\end{align*}
The set $\{y\in X:\rho(y)<j+1\}$ is open in $X$, so $K_j$ is contained in the interior of $K_{j+1}$.
It remains to prove that each $K_j$ is a Stein compact. We use the definition that a compact subset of $X$ is a Stein compact if every open neighborhood of it contains an open Stein neighborhood of it. Fix $j\geq 1$ and an open set $W\subset X$ with $K_j\subset W$. Since $X\setminus W$ is closed and disjoint from $K_j$, and since $\rho$ is an exhaustion, the compact set
\begin{align*}
A := (X\setminus W)\cap \rho^{-1}((-\infty,j+1])
\end{align*}
is disjoint from $K_j$. If $A=\varnothing$, set $\varepsilon:=1$. If $A\neq\varnothing$, define $m:=\min_{x\in A}\rho(x)$; then $m>j$, and set $\varepsilon:=\min\{1,(m-j)/2\}$. In both cases
\begin{align*}
V_{j,\varepsilon}:=\{x\in X:\rho(x)<j+\varepsilon\}
\end{align*}
satisfies $K_j\subset V_{j,\varepsilon}\subset W$.
We now show that $V_{j,\varepsilon}$ is Stein. Let $c:=j+\varepsilon$ and define
\begin{align*}
\tau_{j,\varepsilon}: V_{j,\varepsilon} &\to \mathbb{R}\\
x &\mapsto \frac{1}{c-\rho(x)}.
\end{align*}
The function $t\mapsto (c-t)^{-1}$ on $(-\infty,c)$ is smooth, increasing, and convex. By the Convex Increasing Composition Rule for Strictly Plurisubharmonic Functions, $\tau_{j,\varepsilon}$ is strictly plurisubharmonic. Moreover, for $M>0$,
\begin{align*}
\{x\in V_{j,\varepsilon}:\tau_{j,\varepsilon}(x)\leq M\}
=
\{x\in X:\rho(x)\leq c-M^{-1}\},
\end{align*}
which is compact because $\rho$ is an exhaustion. Thus $\tau_{j,\varepsilon}$ is a smooth strictly plurisubharmonic exhaustion of $V_{j,\varepsilon}$. By the Grauert-Narasimhan Levi Problem, $V_{j,\varepsilon}$ is Stein. Hence $K_j$ has a basis of Stein open neighborhoods, so $K_j$ is a Stein compact.
[guided]
The sublevel sets are the natural candidates because an exhaustion function is designed to produce compact sets. For each $j\geq 1$, we set
\begin{align*}
K_j := \rho^{-1}((-\infty,j])=\{x\in X:\rho(x)\leq j\}.
\end{align*}
The definition of exhaustion gives compactness of $K_j$. The nesting follows from the order of the levels: if $\rho(x)\leq j$, then $\rho(x)\leq j+1$, so $K_j\subset K_{j+1}$.
The interior condition uses the strict inequality between consecutive levels. If $x\in K_j$, then $\rho(x)\leq j<j+1$, so $x$ belongs to the open sublevel set
\begin{align*}
\{y\in X:\rho(y)<j+1\}.
\end{align*}
This open set is contained in $K_{j+1}$, hence every point of $K_j$ is an interior point of $K_{j+1}$.
Now we verify the Stein compact condition. Let $W\subset X$ be any open neighborhood of $K_j$. We must find an open Stein set between $K_j$ and $W$. Consider
\begin{align*}
A := (X\setminus W)\cap \rho^{-1}((-\infty,j+1]).
\end{align*}
This set is compact because it is a closed subset of the compact sublevel set $\rho^{-1}((-\infty,j+1])$. It is disjoint from $K_j$ because $K_j\subset W$. If $A$ is empty, then the sublevel $\{\rho<j+1\}$ is already contained in $W$. If $A$ is nonempty, continuity of $\rho$ gives a minimum $m:=\min_A\rho$, and disjointness from $K_j$ gives $m>j$. Choosing $\varepsilon:=\min\{1,(m-j)/2\}$ ensures that no point outside $W$ can satisfy $\rho<j+\varepsilon$. Therefore
\begin{align*}
V_{j,\varepsilon}:=\{x\in X:\rho(x)<j+\varepsilon\}
\end{align*}
is an open neighborhood of $K_j$ contained in $W$.
It remains to prove that this neighborhood is Stein. Put $c:=j+\varepsilon$ and define
\begin{align*}
\tau_{j,\varepsilon}: V_{j,\varepsilon} &\to \mathbb{R}\\
x &\mapsto \frac{1}{c-\rho(x)}.
\end{align*}
The denominator is positive on $V_{j,\varepsilon}$. The scalar function $t\mapsto(c-t)^{-1}$ is smooth, increasing, and convex on $(-\infty,c)$, so the Convex Increasing Composition Rule for Strictly Plurisubharmonic Functions implies that $\tau_{j,\varepsilon}$ is strictly plurisubharmonic. Its sublevel sets are
\begin{align*}
\{x\in V_{j,\varepsilon}:\tau_{j,\varepsilon}(x)\leq M\}
=
\{x\in X:\rho(x)\leq c-M^{-1}\}
\end{align*}
for $M>0$, and these are compact because $\rho$ is an exhaustion. Thus $\tau_{j,\varepsilon}$ is a smooth strictly plurisubharmonic exhaustion of $V_{j,\varepsilon}$. By the Grauert-Narasimhan Levi Problem, $V_{j,\varepsilon}$ is Stein. Since every neighborhood $W$ of $K_j$ contains such a Stein neighborhood, $K_j$ is a Stein compact.
[/guided]
[/step]
[step:Refine a Stein compact exhaustion to a Runge Stein open exhaustion]
Conversely, assume that compact sets $K_j\subset X$ satisfy
\begin{align*}
K_1\subset K_2\subset K_3\subset\cdots,\qquad \bigcup_{j=1}^\infty K_j=X,
\end{align*}
each $K_j$ is a Stein compact, and $K_j$ is contained in the interior of $K_{j+1}$. Write $K_j^\circ$ for the interior of $K_j$ in $X$.
By the Runge Neighborhood Refinement Theorem for Stein Compact Exhaustions, there exist open subsets $U_j\subset X$, one for each $j\geq 1$, such that each $U_j$ is Stein and
\begin{align*}
K_j\subset U_j,\qquad \overline{U_j}^{\,X}\subset K_{j+1}^\circ,\qquad U_j\subset U_{j+1}.
\end{align*}
The same theorem gives the Runge property for consecutive inclusions: for each $j\geq 1$, the restriction map
\begin{align*}
r_j:\mathcal{O}(U_{j+1}) &\to \mathcal{O}(U_j)\\
f &\mapsto f|_{U_j}
\end{align*}
has dense image for the compact-open topology on $\mathcal{O}(U_j)$.
[guided]
The compact exhaustion is not itself an open cover by Stein manifolds, so we first thicken the compact sets. Since $K_j$ is a Stein compact, it has arbitrarily small Stein open neighborhoods. Since $K_j\subset K_{j+1}^\circ$, these neighborhoods can be chosen inside $K_{j+1}^\circ$.
The refinement theorem supplies the precise form needed for the union argument. It gives open Stein sets $U_j\subset X$ satisfying
\begin{align*}
K_j\subset U_j,\qquad \overline{U_j}^{\,X}\subset K_{j+1}^\circ,\qquad U_j\subset U_{j+1}.
\end{align*}
The inclusion $U_j\subset U_{j+1}$ is essential because the Behnke-Stein theorem applies to increasing unions. The refinement theorem also supplies the Runge condition. Explicitly, for each $j\geq 1$, the restriction map
\begin{align*}
r_j:\mathcal{O}(U_{j+1}) &\to \mathcal{O}(U_j)\\
f &\mapsto f|_{U_j}
\end{align*}
has dense image in the compact-open topology. This density is the analytic mechanism that allows holomorphic functions on earlier stages to be approximated by holomorphic functions from later stages.
[/guided]
[/step]
[step:Apply the Behnke-Stein union theorem to conclude Steinness]
Define the open subset
\begin{align*}
U:=\bigcup_{j=1}^\infty U_j\subset X.
\end{align*}
Because $K_j\subset U_j$ for every $j$, we have
\begin{align*}
X=\bigcup_{j=1}^\infty K_j\subset \bigcup_{j=1}^\infty U_j=U\subset X,
\end{align*}
so $U=X$. Each $U_j$ is Stein, the sequence is increasing, and each inclusion $U_j\subset U_{j+1}$ is Runge in the sense specified by the density of $r_j$. Therefore the Behnke-Stein Union Theorem implies that $U$ is Stein. Since $U=X$, the manifold $X$ is Stein.
[guided]
We now verify the hypotheses of the Behnke-Stein Union Theorem. The theorem requires an increasing sequence of Stein manifolds $U_j$ whose consecutive inclusions are Runge. From the previous step, each $U_j$ is Stein, $U_j\subset U_{j+1}$, and the restriction map
\begin{align*}
r_j:\mathcal{O}(U_{j+1}) &\to \mathcal{O}(U_j)\\
f &\mapsto f|_{U_j}
\end{align*}
has dense image in the compact-open topology, which is exactly the Runge condition used by the theorem.
It remains only to identify the union. Since $K_j\subset U_j$ for every $j$ and the compact sets exhaust $X$,
\begin{align*}
X=\bigcup_{j=1}^\infty K_j\subset \bigcup_{j=1}^\infty U_j.
\end{align*}
The reverse inclusion holds because every $U_j$ is an open subset of $X$. Hence
\begin{align*}
X=\bigcup_{j=1}^\infty U_j.
\end{align*}
The Behnke-Stein theorem therefore gives that $X$ is Stein.
[/guided]
[/step]
Combining the forward construction of the sets $K_j$ with the converse Behnke-Stein argument proves both implications.